性能优化之立即调用函数

前端之家收集整理的这篇文章主要介绍了性能优化之立即调用函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
var digit_name2 = function(n){
    var names = ['zero','one','two','three','four','five','six','seven','eight','nine'];
    return names[n];
};

这个函数远离了意外风险,但是带来了性能损失,由于每次digit_name2被调用的时候,都将重新为names数组定义和分配空间。换个例子如果names是个非常大的数组,或者可能digit_name2函数在一个循环中被调用多次,这时候性能影响将非常明显。

// "An inner function enjoys that context even after the parent functions have returned."
var digit_name3 = (function(){
    var names = ['zero','nine'];
    return function(n){
        return names[n];
    };
})();

这时候我们面临第三个选择。这里我们实现立即调用函数表达式,仅仅实例化names变量一次,然后返回digit_name3函数,在 IIFE (Immediately-Invoked-Function-Expression 立即执行表达式)的闭包函数持有names变量的引用。
这个方案兼具前两个的优点,回避了缺点。搞定!这是一个常用的模式用来创建一个不可被外部环境修改“private”(私有)状态。

原文链接:https://www.f2er.com/note/422439.html

猜你在找的程序笔记相关文章