js代码优化之惰性函数

什么是惰性函数? 简单来说它很惰,所以其只会在函数第一次调用时执行

话不多说,直接上代码

function zhou(){
    if(a === 1){
        console.log("对着JS一调一下午")
    }else{
        console.log("调了一下午,bug还得补")
    }
}

在上面这段代码中存有一个判断语句,如果在当前环境下a的值不变,那么该函数不管你如何执行,其结果都不会发生任何变化。但每次执行还要进行if判断,这势必造成了没有必要的浪费,有人要说了,这样的优化也做吗?当然啦,对于咱们程序员来说,蚂蚁再小也是肉,这样的代码就是考验你技术的时刻

下面来写优化后的惰性代码:

惰性加载表示函数内的执行分支只会发生一次。那如何才能达到发生一次?一般有两种破解方案

  • 函数被调用时处理函数
function zhou(){
    if(a === 1){
        zhou = function(){
            console.log("对着JS一调一下午");
        }
    }else{
        zhou = function(){
            console.log("调了一下午,bug还得补");
        }
    }
    return zhou();
}
// 重点在于对函数重新赋值,并且返回重新赋值后的函数

这样在进入满足条件的分支后会对zhou重新赋值,之后每次调用zhang就不会再执行if判断

  • 声明函数时就指定适当的函数
var zhou = (function () {
    if (a === 1) {
        return function () {
            console.log("对着JS一调一下午");
        }
    } else {
        return function () {
            console.log("调了一下午,bug还得补");
        }
    }
})();

这里创建一个匿名函数并自执行,用来确定具体使用哪一个函数来实现。

惰性函数的特点就是:只在第一次执行时牺牲一点点性能,将性能节省至最低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值