setInterval:将函数作为参数传递时的意外行为

时间:2018-08-09 13:19:39

标签: javascript const setinterval

函数声明:

const getDate = () => {
  return new Date();
}
const seconds = (date) => {
  return date.getSeconds();
}
const minutes = (date) =>{
  return date.getMinutes();
}
const hours = (date) => {
  return date.getHours();
}

这些功能已经过测试并且可以正常工作。

setInterval(update,1000,secondHand,seconds(getDate()));

预期的行为:我的更新功能以秒(getDate())提供的新时间运行。

实际发生的情况:在update函数内部登录时,最后一个参数保持不变并且不会被更新。我怀疑该函数实际上不再执行了,并且最初在setInterval函数中输入的参数是静态/不可更改?

这是正确的吗?有人可以解释这种现象,我该如何避免(除了创建另一个调用所有需要的函数并将其作为setInterval的函数传递的函数)?

谢谢!

1 个答案:

答案 0 :(得分:0)

您实际上必须发送一个要被调用的方法-一个可调用的...您实际上是在发送结果。您正在调用该方法... 您应该尝试在函数的返回中返回另一个函数:)我认为这称为部分应用,类似于咖喱...