mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-29 05:42:20 +00:00
docs(let): edit let
This commit is contained in:
parent
3347915274
commit
8a2c746996
@ -57,7 +57,7 @@ a[6](); // 6
|
|||||||
|
|
||||||
上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是`6`。你可能会问,如果每一轮循环的变量`i`都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量`i`时,就在上一轮循环的基础上进行计算。
|
上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是`6`。你可能会问,如果每一轮循环的变量`i`都是重新声明的,那它怎么知道上一轮循环的值,从而计算出本轮循环的值?这是因为 JavaScript 引擎内部会记住上一轮循环的值,初始化本轮的变量`i`时,就在上一轮循环的基础上进行计算。
|
||||||
|
|
||||||
另外,`for`循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。
|
另外,`for`循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
for (let i = 0; i < 3; i++) {
|
for (let i = 0; i < 3; i++) {
|
||||||
@ -69,7 +69,7 @@ for (let i = 0; i < 3; i++) {
|
|||||||
// abc
|
// abc
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码输出了3次`abc`,这表明函数内部的变量`i`和外部的变量`i`是分离的。
|
上面代码输出了3次`abc`,这表明函数内部的变量`i`不同于循环变量`i`,有自己单独的作用域。
|
||||||
|
|
||||||
### 不存在变量提升
|
### 不存在变量提升
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user