手寫系列 debounce

2021-10-04 02:57:14 字數 658 閱讀 3773

函式防抖(debounce):當持續觸發事件時,一定時間段內沒有再觸發事件,事件處理函式才會執行一次,如果設定的時間到來之前,又一次觸發了事件,就重新開始延時。如下圖,持續觸發scroll事件時,並不執行handle函式,當1000毫秒內沒有觸發scroll事件時,才會延時觸發scroll事件。

function

add()/*

fn是實際要執行的函式

delay代表延遲時間

*///相當於mousemove繫結的是return回來的這個函式,timeout是這個函式的父作用域下的變數

//所以無論是var還是let 總能取到 是閉包沒錯 本來debounce執行完一次就結束了 但是因為這個函式呼叫了timeout 延遲了生命週期

function

debounce

(fn,delay)

,delay)}}

var div = document.

getelementbyid

('show'

)div.

addeventlistener

('mousemove'

,debounce

(add,

1000

))

手寫防抖debounce

防抖 debounce 一段時間不觸發事件才執行一次handle函式 const input1 document.getelementbyid input1 let timer null input1.addeventlistener keyup function timer settimeout ...

前端手寫系列 手寫reduce函式

reduce函式常用於對陣列,reduce函式接受3個引數 被迭代的陣列 用於迭代計算的函式 迭代的初始值 注意點 如果沒有提供初始值時,會預設使用陣列的第乙個元素來作為初始值 function reduce arr,callback,initialval 如果沒有將initialval傳遞給該函式...

回答系列非手寫

問 最近在做什麼,花了多久時間?總綱領 不要妄自揣測面試官問你這個問題的用意,因為你想的可能並不是他想的。也避免引起由於經驗導致的思維誤區,進而引起情緒波動。最純粹的人,才是最強大的人。雙向鍊錶,單項鍊表 面試官 有沒有想問我的?1.淺聊 你覺得我有沒有機會進入貴公司,能不能勝任工作?我特別希望加入...