选择题1619/1620输出是什么?

1for (var i = 0; i < 3; i++) { 2 setTimeout(() => console.log(i), 1) 3} 4 5for (let i = 0; i < 3; i++) { 6 setTimeout(() => console.log(i), 1) 7}
难度:
2021-07-02 创建

本题为"单选题"

参考答案:

正确选项:C:3 3 3 和 0 1 2

由于 JavaScript 的事件循环,setTimeout 回调会在遍历结束后才执行。因为在第一个遍历中遍历 i 是通过 var 关键字声明的,所以这个值是全局作用域下的。在遍历过程中,我们通过一元操作符 ++ 来每次递增 i 的值。当 setTimeout 回调执行的时候,i 的值等于 3。 在第二个遍历中,遍历 i 是通过 let 关键字声明的:通过 letconst 关键字声明的变量是拥有块级作用域(指的是任何在 {} 中的内容)。在每次的遍历过程中,i 都有一个新值,并且每个值都在循环内的作用域中。

最近更新时间:2024-08-03

赞赏支持

题库维护不易,您的支持就是我们最大的动力!