js函数篇——惰性函数的个人理解

惰性函数的思想有点类似于以下场景:

设想张三打字场景 输入 abc

一般函数:

function 打字(内容){
    
    
	console.log("看文稿")
	console.log("输入",内容)
}
打字("a")		//看文稿 	输入a 
打字("b")		//看文稿 	输入b
打字("c")		//看文稿 	输入c

惰性函数:

function 打字(内容){
    
    
  console.log("看文稿")
  打字 = function(内容){
    
    
		console.log("輸入",内容)
  }
  return 打字(内容)
}
打字("a")	//看文稿 	输入a 
打字("b")	//       	输入b 
打字("c")	//		 	输入c 

以上可以便是简易的普通函数与惰性函数的区别:
函数每次执行会走全部方法体,但是有的时候某段逻辑并不需要每次都执行。这里就需要惰性函数的加入了。

在函数第一次执行时,会走一次全部方法体,在走完公共部分后在方法体里对方法进行重新赋值,将局部函数重新赋值函数体本身,并 return 函数体。随后第二次往后的方法调用将不走公共部分(毕竟方法体都给改了,这要是还走这不诈尸了么)

一般函数 惰性函数
张三看文稿 张三看文稿
张三输入a 张三输入a
张三看文稿 张三输入b
张三输入b 张三输入c
张三看文稿
张三输入c

一般函数看一个字打一个字
而惰性函数看一次文稿后就不用看,直接打字

惰性函数还可以进一步改写:

let 打字 = (function (){
    
    
  console.log("看文稿")
  return function (内容){
    
    
    console.log("輸入",内容)
  }
})()
打字("a")	//看文稿 	输入a 
打字("b")	//       	输入b 
打字("c")	//		 	输入c 

如果有更漂亮的写法欢迎来讨论,让我们一起有条不紊的持续进步。
喜欢的话不妨点个小小的赞与关注,您的赞与关注将是我源源不断的前进动力。

猜你喜欢

转载自blog.csdn.net/qq_33226029/article/details/109226750