簡體   English   中英

這是JavaScript中的簡單反跳功能嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM