栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是JavaScript中的(function(){})()构造?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是JavaScript中的(function(){})()构造?

它是立即调用的函数表达式,简称IIFE。它在创建后立即执行。

它与任何事件(例如

document.onload
)的事件处理程序无关。
考虑第一对括号中的部分:....它是一个正则函数表达式。然后查看最后一对,通常将其添加到表达式中以调用函数;在这种情况下,我们的先前表达。
(**function(){}** )();``(function(){}) **()** ;

当试图避免污染全局名称空间时,通常使用此模式,因为IIFE内部使用的所有变量(如在任何其他 常规 函数中一样)在其范围之外都不可见。
这就是为什么您可能将此构造与的事件处理程序混淆的

window.onload
原因,因为它经常被用作:

(function(){    // all your pre here    var foo = function() {};    window.onload = foo;    // ...})();// foo is unreachable here (it’s undefined)

Guffa建议的更正:

该函数在创建后立即执行,而不是在解析之后执行。在执行脚本块中的任何代码之前,都将对其进行分析。同样,解析代码并不会自动意味着它已被执行,例如,如果IIFE在函数内部,那么直到调用该函数后,它才会被执行。

更新 由于这是一个非常受欢迎的话题,值得一提的是,IIFE也可以使用ES6的arrow函数编写(就像Gajus 在评论中指出的那样):

((foo) => foo)('foo value')


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号