gpt4 book ai didi

javascript - setTimeout 如何在 Node.JS 上工作,请解释这段代码片段

转载 作者:行者123 更新时间:2023-11-30 09:02:43 26 4
gpt4 key购买 nike

我正准备尝试使用 Nodejs,但在尝试第一个示例时,我发现了一些难以理解的行为。

var a = function () {
console.log('print 3');
return 5000;
};

setTimeout( function (){
console.log('print 2');
}, a()
);

console.log('print 1');

以上代码的输出是:

print 3print 1print 2

AND a stupid doubt is, while the above code works, this one doesn't.

setTimeout( function (){
console.log('print 2');
}, (function () {console.log('print 3'); return 5000;} )
);
console.log('print 1');

请解释上述行为。

最佳答案

更好地格式化代码应该有助于您了解正在发生的事情。

var a = function () {
console.log('print 3');
return 5000;
};

setTimeout( function (){
console.log('print 2'); # Executed after 5000 ms.
},
a()); # Executed first and returns 5000

console.log('print 1'); #Executed second

以下代码段不起作用,因为您从未执行函数的第二部分。

setTimeout( function (){
console.log('print 2');
}, (function () { # Never executed.
console.log('print 3');
return 5000;
} )
);

console.log('print 1');

以下将起作用:

setTimeout( function (){
console.log('print 2');
}, (function () {
console.log('print 3');
return 5000;
} )(); #The brackets () will execute the function.
);

console.log('print 1');

题外话

该示例与 node.js 无关,将在响应控制台的任何浏览器中产生完全相同的结果。

关于javascript - setTimeout 如何在 Node.JS 上工作,请解释这段代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8029418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com