6

我有以下 JavaScript 代码:

var counter = 0;
function printCounter(){
   console.log("counter=" + ++counter);
   setTimeout(printCounter, 1000);
}
printCounter();

我希望它应该打印这个输出:

counter=1
counter=2
counter=3
...

但相反,它打印以下内容:

counter=1
undefined  // <-- Notice this "undefined"
counter=2
counter=3
...

为什么它在第一次迭代后打印“未定义”?

重要提示:只有在 JavaScript 控制台中执行代码时,我才会看到这种行为。如果它是页面的一部分,它可以正常工作。

4

1 回答 1

9

这是因为“printCounter()”函数本身返回undefined. 那是控制台告诉你表达式的结果。

return "Hello Anton!";通过添加到末尾来更改“printCounter()” :-)

说它“返回undefined”有点令人困惑;真的,它没有明确的回报,但它的效果是一样的。

于 2012-04-21T21:34:48.167 回答