惰性函式的思想有點類似于以下場景:
設想張三打字場景 輸入 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
如果有更漂亮的寫法歡迎來討論,讓我們一起有條不紊的持續進步,
喜歡的話不妨點個小小的贊與關注,您的贊與關注將是我源源不斷的前進動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/189123.html
標籤:其他
下一篇:微信小程式筆記(1)
