我只需要解释奇怪的输出,而不是顺序。
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
Promise.resolve().then(function() {
console.log('promise1');
}).then(function() {
console.log('promise2');
});
console.log('script end');
Chrome上的输出
Firefox和IE上的输出相同
那么,为什么出现undefined
?为什么Chrome和IE / Firefox之间会有区别?
答案 0 :(得分:0)
由于console.log
的原因,它变得不确定,因为它不返回任何内容,所以您得到了不确定的信息。编写
var a = 10
//undefined
如果您从代码中删除console.log()
,那么您将看到undefined
消失了
另一方面,如果添加一些东西,它将产生总和,因此我们不会得到undefined
10+2
12
以这个例子为例:
function add(){
return 12
}
//undefined
add()
12
在上面的代码中,当我们定义一个函数时,它不会重现任何内容,因此我们得到undefined
,而当我们调用它时,它会返回某些内容,而我们只回答否undefined
我已经检查了您在IE和Chrome上的代码,我得到的输出是相同的。如果您仍然想查看该程序的工作原理,则可以在此处尝试运行它。它将向您显示事件循环,调用堆栈和完整的代码执行。