这是什么(函数文字)

Bar*_*ğlu 2 javascript

我有下面的结构,我不太了解输出.

var asker = {
    answer: "Its raining...",
    askQuestion: function(answered){
        console.log("Opps..." + this.answer);
        answered();
    }
}

//function literal
var debunker = function(){

    answer = "Its cloudy...";

    debunk = function(){
        console.log(this); 
        console.log("No way! The real answer is:" + this.answer);
    };

    return {
        debunk: debunk
    };

}();

asker.askQuestion(debunker.debunk); 
Run Code Online (Sandbox Code Playgroud)

它给了我这些输出

Opps...Its raining...
DOMWindow
No way! The real answer is:Its cloudy...
Run Code Online (Sandbox Code Playgroud)

debunker.debunk获取是答案'Its cloudy'.但是this在debunk函数中指的DOMWindow是如何this.answer获取Its cloudy它引用window对象的时间?

Mic*_*ski 6

原因是因为answer也是window对象的属性.如果没有var关键字定义,它将附加到窗口.使用var关键字,它是定义它的函数的私有属性.