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

Why does this JavaScript code print "undefined" on the console?

本文关键字:未定义 打印 控制台 JavaScript 代码 为什么      更新时间:2023-09-26

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

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

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

说它"返回undefined"有点令人困惑;实际上,它没有明确的返回,但它是相同的效果。