mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2024-04-21 12:32:22 +00:00
docs: add class-extends
This commit is contained in:
+10
-8
@@ -1,10 +1,10 @@
|
||||
# let和const命令
|
||||
# let 和 const 命令
|
||||
|
||||
## let命令
|
||||
## let 命令
|
||||
|
||||
### 基本用法
|
||||
|
||||
ES6新增了`let`命令,用来声明变量。它的用法类似于`var`,但是所声明的变量,只在`let`命令所在的代码块内有效。
|
||||
ES6 新增了`let`命令,用来声明变量。它的用法类似于`var`,但是所声明的变量,只在`let`命令所在的代码块内有效。
|
||||
|
||||
```javascript
|
||||
{
|
||||
@@ -21,10 +21,12 @@ b // 1
|
||||
`for`循环的计数器,就很合适使用`let`命令。
|
||||
|
||||
```javascript
|
||||
for (let i = 0; i < 10; i++) {}
|
||||
for (let i = 0; i < 10; i++) {
|
||||
// ...
|
||||
}
|
||||
|
||||
console.log(i);
|
||||
//ReferenceError: i is not defined
|
||||
// ReferenceError: i is not defined
|
||||
```
|
||||
|
||||
上面代码中,计数器`i`只在`for`循环体内有效,在循环体外引用就会报错。
|
||||
@@ -41,9 +43,9 @@ for (var i = 0; i < 10; i++) {
|
||||
a[6](); // 10
|
||||
```
|
||||
|
||||
上面代码中,变量`i`是`var`声明的,在全局范围内都有效,所以全局只有一个变量`i`。每一次循环,变量`i`的值都会发生改变,而循环内被赋给数组`a`的`function`在运行时,会通过闭包读到这同一个变量`i`,导致最后输出的是最后一轮的`i`的值,也就是10。
|
||||
上面代码中,变量`i`是`var`命令声明的,在全局范围内都有效,所以全局只有一个变量`i`。每一次循环,变量`i`的值都会发生改变,而循环内被赋给数组`a`的函数内部的`console.log(i)`,里面的`i`指向的就是全局的`i`。也就是说,所有数组`a`的成员里面的`i`,指向的都是同一个`i`,导致运行时输出的是最后一轮的`i`的值,也就是10。
|
||||
|
||||
而如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。
|
||||
如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。
|
||||
|
||||
```javascript
|
||||
var a = [];
|
||||
@@ -69,7 +71,7 @@ for (let i = 0; i < 3; i++) {
|
||||
// abc
|
||||
```
|
||||
|
||||
上面代码输出了3次`abc`,这表明函数内部的变量`i`不同于循环变量`i`,有自己单独的作用域。
|
||||
上面代码正确运行,输出了3次`abc`。这表明函数内部的变量`i`与循环变量`i`不在同一个作用域,有各自单独的作用域。
|
||||
|
||||
### 不存在变量提升
|
||||
|
||||
|
||||
Reference in New Issue
Block a user