请问为什么每次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 }
上述代码。有块级作用域,所以不会重复声明。
40
相似问题