我一直在阅读解释事件循环的这优秀文章。
在这篇文章中,有一段代码说明了消息是如何排队和处理的:
function f() {
console.log("foo");
setTimeout(g, 0);
console.log("baz");
h();
}
function g() {
console.log("bar");
}
function h() {
console.log("blix");
}
f();
这将打印在控制台(Chrome)如下: foo,baz,blix,未定义的,bar。
我想我理解这里发生了什么,但我不明白这个未定义的是从哪里来的?
发布于 2017-06-28 08:53:34
undefined是f()的返回值,您将看到它是否在交互式控制台上执行,该控制台自动打印最后执行的表达式的值。
发布于 2017-06-28 08:55:03
undefined值是f()语句的结果。javascript中的每个语句都有一个值作为表达式;没有显式返回语句的函数基本上返回undefined。
Chrome控制台总是输出最后执行语句的值,在本例中这是f()的结果。
bar稍后打印出来(即f()返回之后),这让人感到困惑;但这是由超时引起的。
https://stackoverflow.com/questions/44797825
复制相似问题