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=/*问题中发布的代码*/