我想知道这意味着什么:
(function () {
})();
这基本上是在说 document.onload
吗?
原文由 Exitos 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道这意味着什么:
(function () {
})();
这基本上是在说 document.onload
吗?
原文由 Exitos 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这是一个 立即调用的函数表达式,简称 IIFE 。它在创建后立即执行。
它与任何事件的任何事件处理程序(例如
document.onload
)无关。考虑第一对括号内的部分:
( function(){} )();
….它是一个正则函数表达式。然后看最后一对(function(){}) () ;
,这通常被添加到表达式中以调用函数;在这种情况下,我们之前的表达。当试图避免污染全局命名空间时,经常使用这种模式,因为在 IIFE 内部使用的所有变量(就像在任何其他 普通 函数中一样)在其范围之外是不可见的。
这就是为什么,也许,您将此构造与
window.onload
的事件处理程序混淆了,因为它经常这样使用:Guffa 建议的更正:
更新
由于这是一个非常流行的话题,值得一提的是,IIFE 也可以用 ES6 的箭头函数 编写(就像 Gajus 在评论中指出的 那样):