Javascript Mout.js节流功能中的ESLint错误
我正在尝试在我的应用程序中使用Mout.js节流功能 代码如下: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()
/**
* @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