setInterval:为什么要传递返回函数的函数

时间:2018-10-01 20:41:15

标签: javascript reactjs

在学习React时,我遇到了以下代码块here

this.timerID = setInterval(
      () => this.tick(),
      1000
);

在这里,setInterval的第一个参数是一个返回tick()函数的函数。如果仅将this.tick替换setInterval的第一个参数,它将不起作用(意味着时钟停止计时)。而仅通过传递函数here即可使用。 为什么会这样?

setInterval具有功能。为什么我们必须传递一个返回函数的箭头函数呢?

2 个答案:

答案 0 :(得分:3)

使用箭头功能,即使在另一个上下文(例如setInterval)中执行该功能,也可以确保this值保持不变

实际上与

相同
this.timerID = setInterval(this.tick.bind(this), 1000);

答案 1 :(得分:1)

()=>this.tick()的简称:

()=>{
  return this.tick()
}

当lambda仅包含1行代码时,可以省去括号{...}

您实际上是在返回执行this.tick()的返回值