为什么这个JavaScript代码在控制台上打印“未定义”?

时间:2012-04-21 21:33:38

标签: javascript undefined read-eval-print-loop

我有以下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
...

为什么在第一次迭代后打印“undefined”?重要提示:当在JavaScript控制台中执行代码时,我看到这样的行为。如果它是页面的一部分,它可以正常工作。

1 个答案:

答案 0 :(得分:7)

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

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

编辑 - 说它“返回undefined”有点令人困惑;实际上,它没有明确的回报,但它的效果是一样的。