我刚刚看过本教程有关去抖动的内容,但是对于当他使用debounceSayHello("Jeremy")
时如何通过去抖动中的所有这些函数传递名称参数感到非常困惑。为什么用debounce(sayHello,3000)
而不是debounce(()=>sayHello(name),3000)
?当定义内部返回的匿名函数时,那里没有参数,'Jeremy'是如何传入并最终到达apply函数的?非常感谢!
function debounce (func, delay) {
let timerId;
return function () {
if (timerId) {
clearTimeout(timerId)
}
timerId=setTimeout(()=>func.apply(this,[...arguments]),delay);
}
}
function sayHello(name){
console.log(`Hello ${name}`);
}
let debouncedSayHello=debounce(sayHello,3000);
debouncedSayHello('Jeremy')
//Hello Jeremy
原文:
答案 0 :(得分:1)
参数是函数内部可访问的类似数组的对象,其中包含传递给该函数的参数的值。
function sumTotal(){
console.log(arguments); // {'1':1,'2':2,'3':3,'4': 4}
var numSet = [...arguments];
return numSet.reduce((total, num)=>total+num);
}
console.log('Sum: ', sumTotal(1,2,3,4));//Sum: 10