var debounce = function(fn,delay){
    var timeoutId;
    return function debounced(){
        if(timeoutId){
            clearTimeout(timeoutId);
        }
        timeoutId = setTimeout(fn.bind(this),delay,arguments);
    }
}

以上功能是一种简单的反跳方法吗?我想知道它是否正确实现。有没有瑕疵?

最佳答案



是的。 setTimeout函数不将arguments数组作为第三个参数。它可能需要两个以上的参数,但是由于它们与旧版引擎不向后兼容,因此不屑一顾。在 setTimeout at MDN上阅读。所以最好去

var that = this,
    args = arguments;
timeoutId = setTimeout(function() {
    fn.apply(that, args);
}, delay);

关于javascript - 这是JavaScript中的一个简单的反跳功能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20695334/

10-09 18:04