我是 JS 的新手。如果这个问题太天真了,请原谅我。
我正在使用这样的 IIFE:
var App = (function() {
var test = '';
var init = function() {
App.test = 'test';
};
return {
init: init
};
})();
如果我不返回它,为什么 App.test 会暴露?我以为只有返回的变量会被公开(比如 App.init)。另外,我如何设置 App.test 的值而不暴露它?
通过公开它,我的意思是可以在 IIFE 之外访问(即:浏览器的控制台)
提前致谢!
最佳答案
您的 App.test
属性与该匿名函数中的局部变量 test
不同。它只是您调用 App.init()
时创建的 App 对象的一个属性。
在任何对象上,代码通常可以随意创建属性,所以你也可以做类似的事情
App.favoriteColor = "blue";
现在,如果您要做的是将 test
变量作为私有(private)数据存储保存在闭包中,那么您的 init()
函数应该只是直接引用它而不是引用“App”对象的属性:
var init = function() {
test = 'test';
}
关于javascript - IIFE 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29800726/