0

我在网上找到了以下代码,我正在尝试实现它以与调整大小事件侦听器一起使用,并且正在努力理解它的工作原理的复杂性。有人愿意把它分解成只有 3 个月的 JS/Jquery 经验的人会理解吗?关于我正在努力解决的问题的一些指针(这是大部分,但我将定义真正令人困惑的部分)“参数”或它的值已分配给的变量“args”在哪里定义?如何将“立即”传递给去抖动功能。等等等等

function debounce(func, wait, immediate) {
    var timeout;

    return function() {

        var context = this,
            args = arguments;


        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };

        var callNow = immediate && !timeout;

        clearTimeout(timeout);

        timeout = setTimeout(later, wait);

        if (callNow) func.apply(context, args);

    };
};

var debounceHeightSet = debounce(function() {
    numHeightset();
}, 250);
4

1 回答 1

0

Arguments 是 Javascript 仅在其请求时创建的数组,因此您无需定义它。由于性能问题和安全问题,在 javascript 中使用参数也不是一个好习惯。

不过,此代码中定义了 Args。

var context = this,
    args = arguments;

上面的语句是使用逗号定义多个变量的方式。因此,所有变量都不需要 var 关键字。

var callNow = immediate && !timeout;

上面是一个检查,所以“立即”必须是一个“布尔值”。

所以你可以把这个函数称为

var debounceHeightSet = debounce(function() {
  numHeightset();
 }, 250,true);

由于函数是 Javascript 中的第一类对象,因此在此代码中使用了各种函数。示例: 1) 函数 'func' 作为函数 'debounce' 的参数接收。2) 函数“debounce”也返回一个函数。

注意:这里返回的函数是一个匿名函数,因为这里不需要名字。调用“去抖动”的人可以将其存储为任何变量。

于 2014-09-25T09:52:08.193 回答