请问为什么每次for(let i=0;i<10;i++)都会创建一个块级作用域?

来源:6-6 作用域相关的面试题 - part2

Crispika

2020-06-26

比较不理解执行for循环实际发生了什么,我一直以为是只申明了一次变量 let i=0, 之后每次只是改变变量i的值(+1)。但是这样理解的话,就只会在申明它的时候创建一个block作用域,所有的点击回调函数共享外部的block作用域里i的值,就都会返回10。

但是按照每次都会新创建一个block作用域来理解,就相当于每次for都重新申明变量:
let i =0
let i = 1
let i = 2……,可是let 又是不能反复申明同一个名字的变量的,会报错,我就被搞糊涂了,请老师指点一下。

写回答

1回答

双越

2020-06-26

{
    let i = 1
}
{
    let i = 2
}
{
    let i = 3
}

上述代码。有块级作用域,所以不会重复声明。

4
0

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程