【发布时间】:2012-12-28 09:16:38
【问题描述】:
我看到很多类似的代码:
var myApp ={};
(function() {
console.log("Hello");
this.var1 = "mark"; //"this" is global, because it runs immediately on load. Caller is global
myApp.sayGoodbye = function() {
console.log("Goodbye");
};
})();
这会导致匿名函数立即执行。但是,与仅仅将代码内联相比,这样做有什么好处呢?
var myApp ={};
console.log("Hello");
var1 = "mark";
myApp.sayGoodbye = function() {
console.log("Goodbye");
};
显然它与函数的范围有关,但由于该函数是匿名的并且由窗口调用,所以它的范围(即this)是全局的,不是吗?
【问题讨论】:
-
在第二个 sn-p 中,var1 附加到窗口范围,在第一个中它不是。
-
但是当我使用 Chrome 浏览示例 1 时,
var1是全局的。 -
这种结构的原因不在我们看到的代码中。或者完全没用。请向我们展示更多代码。
-
我认为后者在严格模式下不起作用
-
@dystroy - 这是一个示例,没有其他代码。根据 Chrome,
var1每次都是全局的。
标签: javascript design-patterns anonymous-function iife