使用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);
};
})();