gpt4 book ai didi

javascript - IIFE 中的变量作用域

转载 作者:行者123 更新时间:2023-12-04 01:44:50 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com