在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 關(guān)于的debounce原理

關(guān)于的debounce原理

function debounce(fn, delay) {

var timer

return function () {


var context = this
var args = arguments


clearTimeout(timer)



timer = setTimeout(function () {
  fn.apply(context, args)
}, delay)

}
}

代碼如上 不明白這里為什么一定要 return function 加一層是干什么用的

求解

回答
編輯回答
朕略萌

1.debounce是一個(gè)高階函數(shù),接受一個(gè)函數(shù)作為參數(shù),返回一個(gè)經(jīng)過(guò)防抖包裝的函數(shù)。所以返回的一定是一個(gè)函數(shù)。

2.至于為什么不直接返回原函數(shù),是因?yàn)檫@個(gè)防抖處理需要在原函數(shù)執(zhí)行前進(jìn)行抖動(dòng)判斷,而原函數(shù)的內(nèi)容時(shí)無(wú)法修改的,因此需要返回一個(gè)自己定義的函數(shù)以執(zhí)行判斷邏輯

2018年3月2日 15:26
編輯回答
莫小染

var s=debounce(fn,args);
.......
s()

生成函數(shù)后在適當(dāng)?shù)臅r(shí)候調(diào)用

2017年3月18日 12:35
編輯回答
只愛(ài)你

閉包啊。不然timer每次都是新的, 無(wú)法記住上一下的定時(shí)器了啊。

也就是說(shuō)你的clearTimeout(timer) 等價(jià)于 clearTimeout(undefined)

2017年7月6日 17:05