JS中的IIFE(立即执行方法)

IIFE:immediately-invoked function expression

通常函数的闭包时这样写的

(function(s) {/*函数体*/})();

这段代码会被立即执行,就是所谓的IIFE,立即执行函数体为什么要被一个括号包起来呢,因为JS代码在执行的时候,对于普通的函数会进行两次检查pre-parse和full-parse,pre-parse只检查简单的语法,用时少,full-parse在运行前进行,用时多,因为提交的代码中不一定所有的方法都会被执行,所以先全部执行一次pre-parse再针对即将被执行的代码full-parse可以提高效率。

但是对于IIFE来说,pre-parse是没有必要的,JS引擎对此作了专门的优化,就是在检查到函数前有"("或者"!"的时候,直接进项full-parse。

//先进行pre-parse

varfoo= function() {

//code...

};

//再进行full-parse

foo();

//只执行一次full-parse

(function() {

//code...

})();

//只执行一次full-parse

!function() {

//code...

}();

以前看到书里的代码都是这么写的,人云亦云也就跟着写了这么久,从来不知道什么意思。

本质上来讲,这种写法是编码者针对JS引擎识别立即执行函数的方法而作出的优化,一个小小的改动对性能优很大的提升。

优化程度可以通过重复执行两个函数计算平均时间来看,实验以后再做......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,123评论 25 709
  • <a name='html'>HTML</a> Doctype作用?标准模式与兼容模式各有什么区别? (1)、<...
    clark124阅读 9,026评论 1 19
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 8,994评论 2 41
  • 和老朋友见面聊天,得知几位熟识的朋友最近在上一些心理疗愈方面的课程,是因为发现自己的儿童或是少年时期的生活有一些缺...
    ___神经质阅读 2,642评论 0 0
  • 忽然间的倾盆大雨 让我避无可避 头发湿了 衣服也黏腻着 可我却跑不动 脚上的鞋有些滑了 跟也太高了 裙子也有些窄 ...
    柏浅歌阅读 2,607评论 0 2

友情链接更多精彩内容