Javascript 为什么下面的代码给出';未定义';内部输出
Javascript 为什么下面的代码给出';未定义';内部输出,javascript,settimeout,Javascript,Settimeout,(函数(){ 控制台日志(1); setTimeout(函数(){console.log(2);},1000); setTimeout(函数(){console.log(3);},0); 控制台日志(4); })();未定义是函数的返回值。如果您在浏览器控制台中执行此操作,它将打印未定义,因为它会自动打印功能的结果。如果您在浏览器本身的控制台中执行此操作,则每当您在console.log中执行此操作时,它将打印未定义,请参阅以下线程: 还有无数其他线索解释了为什么会发生这种情况 如果这不在控制
(函数(){
控制台日志(1);
setTimeout(函数(){console.log(2);},1000);
setTimeout(函数(){console.log(3);},0);
控制台日志(4);
})();代码>未定义是函数的返回值。如果您在浏览器控制台中执行此操作,它将打印未定义,因为它会自动打印功能的结果。如果您在浏览器本身的控制台中执行此操作,则每当您在console.log中执行此操作时,它将打印未定义,请参阅以下线程:
还有无数其他线索解释了为什么会发生这种情况
如果这不在控制台中,而是在JS文件本身中,那么代码中的其他地方也有其他东西在执行此操作未定义的是函数返回,您可以尝试以下代码:
(function(){
console.log(1);
setTimeout (function(){console.log(2);},1000);
setTimeout (function(){console.log(3);},0);
console.log(4);
return 5;
})();
这是因为函数的返回值是未定义的。因此,它首先记录1,4,返回函数的值
,然后记录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
你是在谷歌Chrome控制台上测试这个吗?请看代码片段,除非你在别的地方登录,否则没有未定义的
!我在chrome控制台中进行测试。我是指顶部的那个。@LKTN.25有一个!它就像somevar=/*问题中发布的代码*/所以从技术上讲,只有生命才是最重要的,其他人都被包裹在生命中!