js-惰性函数的个人理解

it2026-04-11  4

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

张三打字场景 输入 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

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

最新回复(0)