阅读NodeJS书籍中的教程。它为我提供了尝试setInterval的代码:
var x = 0,
y = 0,
z = 0;
function displayValues() {
console.log("X=%d; Y=%d; Z=%d", x, y, z);
}
function updateX() {
x += 1;
}
function updateY() {
y += 1;
}
function updateZ() {
z += 1;
displayValues();
}
setInterval(updateX, 500);
setInterval(updateY, 1000);
setInterval(updateZ, 2000);

它的工作原理就像它应该的那样。那么我试着制作我自己更简单的版本:
var x = 0;
function incrementX() {
x++;
console.log(x);
}
setInterval(incrementX(), 1000);

并且它不起作用。它在一秒钟后显示1,然后给我这个错误信息:
timers.js:265
callback.apply(this, args);
^
TypeError: Cannot read property 'apply' of undefined

任何人都可以向我解释为什么第一个片段有效,但第二个片段不起作用?
答案 0 :(得分:2)
请勿使用大括号language-c-inline
()
当您传递setInterval(incrementX, 1000);
时,实际上是传递了incrementX()
返回的结果,而不是函数。 incrementX()
是incrementX
期望的函数。