[英]Is this a simple debounce function in javascript?
var debounce = function(fn,delay){
var timeoutId;
return function debounced(){
if(timeoutId){
clearTimeout(timeoutId);
}
timeoutId = setTimeout(fn.bind(this),delay,arguments);
}
}
以上功能是一種簡單的反跳方法嗎? 我想知道它是否正確實施。 有沒有瑕疵?
有沒有瑕疵?
是。 setTimeout
函數不將arguments
數組作為第三個參數。 它可能需要兩個以上的參數,但是由於它們與舊版引擎不向后兼容,因此不屑一顧。 在MDN的setTimeout
上閱讀。 所以最好去
var that = this,
args = arguments;
timeoutId = setTimeout(function() {
fn.apply(that, args);
}, delay);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.