我正在阅读一篇关于 IIFE 的文章,但觉得它带来的主要价值是它为变量创建了隐私,因为在下面的代码中,如果将“i”放在 IIFE 中,则无法更改。但是命名空间呢?鉴于它们都在“计数器”范围内包含它们的变量,这两者之间有什么区别?
var counter = {
i: 0,
increment: function () {i++;}
};
var counter = (function () {
var i = 0;
return {
increment: function () {i++;}
};
})();