(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
})();
输出:
1
4
undefined
3
2
为什么输出中存在未定义的内容?
答案 0 :(得分:5)
如果您在浏览器本身的控制台中执行此操作,那么无论何时您在console.log中打印undefined,请参阅此主题:
Chrome/Firefox console.log always appends a line saying undefined
还有无数其他线程解释了为什么会发生这种情况。
如果这不是在控制台中,而是在你的JS文件中,那么你的代码中的其他地方就会有其他的东西
答案 1 :(得分:4)
undefined是函数的返回值。如果您在浏览器控制台中执行此操作,则打印未定义,因为它会自动打印您的功能结果。
答案 2 :(得分:2)
这是因为函数的返回值是undefined
。因此它首先记录1,4,return value of function
然后它将记录setTimeout
例如
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
return 'xyz'
})();
输出
1,4,'xyz',3,2
答案 3 :(得分:1)
undefined是函数返回,你可以尝试下面的代码:
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
return 5;
})();