gpt4 book ai didi

javascript - IIFE 如何保护命名空间?

转载 作者:行者123 更新时间:2023-12-03 07:19:29 28 4
gpt4 key购买 nike

我正在阅读 article关于 IIFE,但认为它带来的主要值(value)是它为变量创建了隐私,在下面的代码中,如果将“i”放在 IIFE 中,则无法更改。但是命名空间呢?鉴于它们都在“计数器”范围内包含变量,两者之间有什么区别?

var counter = {
i: 0,
increment: function () {i++;}
};

var counter = (function () {
var i = 0;
return {
increment: function () {i++;}
};
})();

最佳答案

除非函数选择返回引用,否则无法从声明该变量的函数外部访问该变量。由于 Javascript 只有函数作用域,并且没有版本提供 namespace block ,因此这是向其他代码隐藏变量的唯一方法。

对于 ES6 引入的其他作用域,您可以使用 block 作用域,或者理想情况下,使用模块作用域来简化此操作:

let i = 0;
export default {
increment: function () {i++;}
};

关于javascript - IIFE 如何保护命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269754/

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