1
0
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:
ruanyf 2017-05-31 20:54:06 +08:00
parent 3347915274
commit 8a2c746996

View File

@ -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`,有自己单独的作用域
### 不存在变量提升 ### 不存在变量提升