Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这段JavaScript代码会打印;“未定义”;在控制台上?_Javascript_Undefined_Read Eval Print Loop - Fatal编程技术网

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

为什么这段JavaScript代码会打印;“未定义”;在控制台上?,javascript,undefined,read-eval-print-loop,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 // &

我有以下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
...
计数器=1
未定义//这是因为“printCounter()函数本身返回
未定义
。这是控制台,告诉您表达式的结果

通过添加
返回“Hello Anton!”更改“printCounter()”到结尾:-)


说它“返回
未定义的”
”有点让人困惑;实际上,它没有显式返回,但效果相同。

…因此,
未定义的
是REPL计算的结果,但由于异步计时器正在运行,它将继续调用
控制台.log
…是的,谢谢,您说得对。我很困惑,因为并非所有浏览器都是如此。真正的规范问题可能是