惰性载入函数和一次性函数

惰性载入函数和一次性函数基本类似;如惰性载入函数:

在某个场景下我们的函数中有判断语句,这个判断依据在整个项目运行期间一般不会变化,所以判断分支在整个项目运行期间只会运行某个特定分支,那么就可以考虑惰性载入函数

function foo(){
  if(a !== b){
    console.log('aaa')
  }else{
    console.log('bbb')
  }
}

// 优化后
function foo(){
  if(a != b){
    foo = function(){
      console.log('aaa')
    }
  }else{
    foo = function(){
      console.log('bbb')
    }
  }
  return foo();
}

那么第一次运行之后就会覆写这个方法,下一次再运行的时候就不会执行判断了。当然现在只有一个判断,如果判断很多,分支比较复杂,那么节约的资源还是可观的。

一次性函数道理一样:

可以在函数体里覆写当前函数,那么可以创建一个一次性的函数,重新赋值之前的代码相当于只运行了一次,适用于运行一些只需要执行一次的初始化代码
var sca = function() {
  console.log('msg')
  sca = function() {
    console.log('foo')
  }
}
sca() // msg
sca() // foo
sca() // foo

虽然平时用到的少,但是有时候特殊场景确实需要用到,不了解一次性函数时解决就很头疼,或者加一个字段判断,初始值a=false,执行一次就赋值a=true

var a = false

var b = 0 // 改变b的值一次

func ()  {

  if (!a) {

    console.log();// 执行一次的

    b ++

    a = true

  }

}

func()函数放到一个循环体里,b的值只改变1次,即为b=1

长风破浪会有时,直挂云帆济沧海
posted @ 2020-06-29 11:21  清风引佩下瑶台  阅读(123)  评论(0编辑  收藏  举报