如何通过去抖功能传递“参数”?

时间:2019-12-18 16:27:40

标签: javascript this apply bind debounce

我刚刚看过本教程有关去抖动的内容,但是对于当他使用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

原文:

https://www.youtube.com/watch?v=qwbjDkSqgss

1 个答案:

答案 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