【发布时间】:2019-01-15 06:18:17
【问题描述】:
我在 Javascript MCQ 测试中遇到了这个简单(或我认为是)的问题:
After how much time will the following code execute entirely?
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
setTimeOut(console.log("hi"),1000);
Options
A) 1 second
B) 2 seconds
C) 4 seconds
D) 5 seconds
我以选项 D) 5 seconds 的形式回答,因为上面的每一行都需要 1000 毫秒来执行,即总共 5000 毫秒 = 5 秒
但在结果中,它说实际答案是Option A) 1 second。
我在控制台中执行了这五行(总共),整个代码在 1 秒后执行,就像答案所说的那样。
我不明白正确答案背后的逻辑,以及为什么我的推理是错误的。
【问题讨论】:
-
这些都不正确。
console.log("hi")没有包裹在function中,所以它会立即执行。你还有一个额外的),所以这可能不是实际代码。 -
问题输入错误。它必须是
setTimeout( function(){console.log("hi")}, 1000 );。 setTimeOut 是错误的,我们需要在 console.log 周围有一个函数,并且最后一个括号应该被删除!那么答案就是它所说的,由于 setTimeout 的异步行为,因为它会立即返回并在指定时间运行回调。 -
我删除了多余的
)。他们写错了。 @科比 -
youtube.com/watch?v=8aGhZQkoFbQ 看到这个完全理解为什么会发生。
标签: javascript