JavaScript惰性函数手写实现

64 阅读1分钟

JavaScript惰性函数手写实现

惰性函数就是当函数需要频繁执行判断逻辑(如判定浏览器版本从而实现不同操作)的情景下,将结果以函数的形式保存在原函数名下,从而实现函数的重写,避免多次执行冗余判断逻辑。

实现版本1:以函数声明的形式定义,调用两次

var testProperty = 'Chrome'function lazyFunction(){
    console.log('第一次加载')
    if(testProperty==='Chrome'){
        return lazyFunction = function(arg1='Chrome',arg2='Browser'){
            console.log('第二次加载',arg1,arg2);
        }
    }else{
        return lazyFunction = function(arg1='Else',arg2='Browser'){
            console.log('第二次加载',arg1,arg2);
        }
    }
}
​
lazyFunction(); //第一次加载
lazyFunction(); //第二次加载 Chrome Browser
//或者lazyFunction()();

实现版本2:以函数表达式+立即执行形式定义,调用一次

var testProperty = 'Chrome'var anotherLazyFunction = (function(){
    console.log('ano第一次加载');
    if(testProperty==='Chrome'){
        return lazyFunction = function(arg1='Chrome',arg2='Browser'){
            console.log('ano第二次加载',arg1,arg2);
        }
    }else{
        return lazyFunction = function(arg1='Else',arg2='Browser'){
            console.log('ano第二次加载',arg1,arg2);
        }
    }
})();
​
anotherLazyFunction();
//ano第一次加载
//ano第二次加载 Chrome Browser