使用IIFE优化js代码

阅读数:65 评论数:0

跳转到新版页面

分类

html/css/js

正文

IIFE(Immediately-invoked function expression),即立即执行函数。

语法:

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

!function(){/* 函数体 */}()

JS 引擎在真正执行代码之前会对代码中函数声明做一遍 pre-parse(预解析),大多数的函数都不是立即被使用的(甚至完全没被调用过),不需要对它们做一次完整的解析,只需要做一次性能开销更小的 pre-parse(比如检查一下语法错误),等函数真正被调用时,再进行完整的 full-parse。

// 下面的函数会先进行pre-parse
function foo() {
    //......
}

// 2秒之后函数被执行,又会进行一遍full-parse
setTimeout(foo, 2000);

但对于立即执行函数这种奇葩来说,它不适用于上面的规则,应该直接进行 full-parse。现在的大多数引擎也完全考虑到了这一点:

// 只会进行一次full-parse
(function() {
   //......
})();

优化示例

function removeSpace(str) {
  return str.replace(/\s/g, '');
}

// 下面是优化后的,不会生成多余的正则表达式
var removeSpace = (function(){
  var reg = /\s/g;
  return function (str) {
    return str.replace(reg,str);
  };
})();



相关推荐