javascript - JavaScript 中 setInterval() 函数的用法

标签 javascript

我不明白为什么下面的代码不起作用。

function doSome(){
    console.log("Hi");
}

setInterval(doSome(), '1000');

我的期望:

// every second
Hi
Hi
Hi
...

但结果

TypeError: Cannot read property 'call' of undefined
    at wrapper [as _onTimeout] (timers.js:275:18)
    at Timer.listOnTimeout (timers.js:92:15)

好的,如果我将 setInterval(doSome(), '1000'); 更改为 setInterval(function(){doSome()}, '1000');该代码运行良好。但我不知道有什么不同,也不知道为什么我必须像 function(){...} 那样包装函数,你能告诉我一些提示吗,谢谢...

最佳答案

代码的问题是 setInteval 期望第一个参数是对函数的引用,而 doSome() 将计算为某个值,在本例中 null .

您想要的是以下内容:

function doSome(){
  console.log("hi");
}
setInterval(doSome, 1000);
正如您所指出的,您还可以使用匿名函数(返回对该函数的引用)来调用您真正想要执行的函数。这对于调用带有参数的函数很有用。

function doMore(x, y){
  if (x < y)
    console.log("Hi");
  else
    console.log("Bye");
}
setInterval(function(){ doMore(0,1);}, 1000);

第二个示例很简单,但展示了如何使用 setInterval 调用需要参数的函数。

关于javascript - JavaScript 中 setInterval() 函数的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504092/

相关文章:

c# - 从 Javascript 调用 Web 服务时使用文档对象而不是 JSON

javascript - AJAX POST 上的 Django [WinError 10053]

javascript - 为什么我的 svg 节点会在 IE 中泄漏内存

javascript - HTML 实体十六进制字符引用不起作用

javascript - 如何在php变量中获取span文本?

javascript - 我想监听服务器上的变化并相应地更新我的网页。我怎样才能用 JavaScript 做到这一点?

javascript - 加载数据表复选框(如果数据库中有),已选中

javascript - 我的 React 应用程序中未显示工具提示

javascript - 从 HTML 中移除 JavaScript 代码

javascript - 内容安全策略错误,没有任何内联 JavaScript