【发布时间】:2013-10-17 21:09:02
【问题描述】:
我正在尝试将 JavaScript 对象文字包装在自执行匿名函数中。下面的第一个代码示例可以正常工作,但第二个不能,我不确定为什么?
作品:
(function(){
return MyApp = {
init: function() {
console.log('MyApp init');
}
}
})();
不起作用:
(function(){
var MyApp = {
init: function() {
console.log('MyApp init');
}
}
return MyApp;
})();
据我了解,SEAF 应该执行并立即返回。这就是为什么第一个示例返回 MyApp 作为我可以与之交互的对象的原因。我认为将 MyApp 分配给 SEAF 内的变量然后返回它会做同样的事情,但在:
Uncaught ReferenceError: MyApp is not defined
为什么?
【问题讨论】:
-
在您的第一个示例中,您将结果分配给名为“MyApp”的全局变量。在第二种情况下,您将变量分配给名为“MyApp”的闭包局部变量。您必须在某处分配闭包执行的结果,否则它会丢失。
-
Your code works just fine 假设您捕获了返回值。
-
正如 zzzzBov 指出的那样,如果你输入
var someName = (theClosureExecution),它就可以正常工作
标签: javascript namespaces object-literal