这个 JavaScript 代码结构的意义何在?



我发现一个代码的结构如下:

(function() {
function Usermanager(user) {
...
...
// other properties
}
//prototype methods
// And then noticed this line:
window.Usermanager = Usermanager;
}()

这行不是替代旧语法中模块不可用的模块导出吗?

window.Usermanager = Usermanager;

如果是,那么在IIFE函数中添加它有什么意义呢?IIFE函数提供了保持所有内容私有的功能。

这行不是模块导出的替代品吗

不是。它在浏览器环境中创建全局。它远没有使用CommonJS模块那么受控制。

如果是,那么在IIFE函数中添加它有什么意义?IIFE函数提供了保持所有内容私有的功能。

保持所有其他私有,并且只公开单个变量。

它并不等同于es6模块。在过去,你知道我们没有私有变量,而且我们需要一个封装来使我们的代码更有效,所以我们从函数范围中受益,并借用IEFE来做到这一点,所以让我向你展示它是如何做到的

(function(win, doc){
var _private = "private";
win.public = "public";
})(window, document);

我希望这个小小的解释能有所帮助。

最新更新