Javascript Mout.js节流功能中的ESLint错误

Javascript Mout.js节流功能中的ESLint错误,javascript,ecmascript-6,eslint,throttling,Javascript,Ecmascript 6,Eslint,Throttling,我正在尝试在我的应用程序中使用Mout.js节流功能 代码如下: /** * @version 0.1.0 (2012/11/27) */ export default function throttle(fn, delay) { let context; let timeout; let result; let args; let cur; let diff; let prev = 0; function delayed()

我正在尝试在我的应用程序中使用Mout.js节流功能

代码如下:

/**
 * @version 0.1.0 (2012/11/27)
 */
export default function throttle(fn, delay) {
    let context;
    let timeout;
    let result;
    let args;
    let cur;
    let diff;
    let prev = 0;
    function delayed() {
        prev = Date.now();
        timeout = null;
        result = fn.apply(context, args);
    }
    function throttled() {
        context = this;
        args = arguments;
        cur = Date.now();
        diff = delay - (cur - prev);
        if (diff <= 0) {
            clearTimeout(timeout);
            prev = cur;
            result = fn.apply(context, args);
        } else if (!timeout) {
            timeout = setTimeout(delayed, diff);
        }
        return result;
    }
    return throttled;
}
/**
*@version 0.1.0(2012/11/27)
*/
导出默认功能节气门(fn,延迟){
让语境;
让超时;
让结果;
让args;
让cur;
让差异;
设prev=0;
函数延迟(){
prev=日期。现在();
超时=空;
结果=fn.apply(上下文,args);
}
函数throttled(){
上下文=这个;
args=参数;
cur=Date.now();
diff=延迟-(cur-prev);

如果(diffarguments对象不是正确的数组,那么ESLint规则鼓励您不要使用它

有关参数,请参阅文档,了解使用arguments对象所需的特殊处理类型:

正如Patrick在评论中所说,解决方案是使用如下rest参数:

function throttled(...rest) {
    context = this;
    args = rest;
    cur = Date.now();
    diff = delay - (cur - prev);
    if (diff <= 0) {
        clearTimeout(timeout);
        prev = cur;
        result = fn.apply(context, args);
    } else if (!timeout) {
        timeout = setTimeout(delayed, diff);
    }
    return result;
}
函数被限制(…rest){
上下文=这个;
args=休息;
cur=Date.now();
diff=延迟-(cur-prev);

如果(差异<代码>节流(…静止)
args=rest
。将
参数
对象直接分配给另一个变量,特别是在草率模式下,会破坏优化,因为每当在函数体中重新分配命名参数时,
参数
对象都会保留一个参数的活动列表。在严格模式下,此行为不会导致ot会发生,但它仍然减少了JIT编译器在执行代码时对代码所做的假设,这会导致代码速度变慢。不需要两个变量,只需使用
…args