【问题标题】:Why does this JavaScript code print "undefined" on the console?为什么此 JavaScript 代码在控制台上打印“未定义”?
【发布时间】:2012-05-03 00:57:57
【问题描述】:

我有以下 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 控制台中执行代码时看到这种行为。如果它是页面的一部分,它可以正常工作。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • ...所以undefinedREPL评估的结果,但是由于异步计时器正在运行,它将继续调用console.log...
  • 是的,谢谢,你是对的。我很困惑,因为并非所有浏览器都是如此。
猜你喜欢
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 2018-04-15
  • 2021-04-28
相关资源
最近更新 更多