试题
考点

js语言和框架-JavaScript语言-闭包相关

面5笔5

下列代码输出什么:

for (var i = 0; i < 3; i++) {
setTimeout(function log() {
console.log(i); // => ?
}, 1000);
}


前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

【解析】

输出:3, 3, 3。

代码分为两个阶段执行。

阶段1

for() 重复 3 次。在每次循环都会创建一个新函数 log(),该函数将捕获变量 i。 setTimout() 安排log() 在 1000 毫秒后执行。当 for() 循环完成时,变量 i 的值为 3。

阶段2

第二阶段发生在 1000ms 之后:setTimeout() 执行预定的 log() 函数。 log() 读取变量 i 当前的值 3,并输出 3所以输出 3, 3, 3。

文章链接

评论
暂无评论

加载更多