我有以下代碼:IIFE的這個變量是如何引用全球範圍的?
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log("outer func: this.foo = " + this.foo);
console.log("outer func: self.foo = " + self.foo);
(function() {
console.log("inner func: this.foo = " + this.foo);
console.log("inner func: self.foo = " + self.foo);
}());
}
};
此輸出:
outer func: this.foo = bar
outer func: self.foo = bar
inner func: this.foo = undefined
inner func: self.foo = bar
我明白這是因爲IIFE的this
是指全球範圍內,不myObject
。但爲什麼它涉及全球範圍?爲什麼IIFE的this
變量指的是全球範圍?
道格拉斯克羅克福德的Javascript:好的部分對我理解JS的函數範圍怪癖有很大的幫助。 http://it-ebooks.info/book/274/ – 2015-04-05 22:44:06
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/這個很好的解釋。 – mrmcgreg 2015-04-05 22:54:00