被Javascript setInterval示例和实际工作/非工作行为所困惑

时间:2018-03-11 00:36:14

标签: javascript syntax setinterval

很多关于stackoverflow和其他地方的例子,显示了setInterval按名称调用函数,后跟interval参数。如同以下情况一样有意义:

function sayHi() { window.alert('hello')}       
window.setInterval(sayHi, 1000)

也尝试过(虽然这不是示例显示的方式)

window.setInterval(sayHi(), 1000)

但它没有(也没有非常简单的功能的任何变化)。我只能通过在setInterval语句中“拼出”函数来实现它,如下所示:

window.setInterval(function(){window.alert('hello')}, 1000) 

关于此的任何信息都非常感谢。

2 个答案:

答案 0 :(得分:2)

以下代码正在执行函数sayHi

window.setInterval(sayHi(), 1000)
                        ^
                        |
                        +--- The setTinterval function
                             is receiving an undefined value,
                             rather than a function.

因此,此代码可以正常工作

window.setInterval(sayHi, 1000)  
                       ^
                       |
                       +--- setTinterval receives a function, that
                            will be executed in the future.

所以,基本上,你需要传递一个函数对象才能使它工作。

另一个例子是执行函数sayHi(),它返回一个函数:

var id;
function sayHi() {
  return function() {      // This is the function that setInterval
    window.alert('hello'); // will execute in the future.
    clearInterval(id);
  }
}

var id = window.setInterval(sayHi(), 1000)

答案 1 :(得分:-1)

setInterval的标准参数是函数和间隔。

window.setInterval(sayHi(), 1000);无法正常工作,因为sayHi()不是函数,它未定义。 sayHi是一个函数,而不是sayHi()

window.setInterval(sayHi, 1000)是这样做的方法。

因为sayHi等于function(){window.alert('hello')}

window.setInterval(sayHi(), 1000);window.setInterval(function(){window.alert('hello')}, 1000) ;

相同

经过测试,两者都有效,您是否收到任何错误?

相关问题