mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-24 18:32:22 +00:00
edit let
This commit is contained in:
parent
73e5815b97
commit
6fae5b1d8b
@ -605,7 +605,7 @@ function co(gen) {
|
||||
}
|
||||
```
|
||||
|
||||
接着,co将Generator函数的内部指针对象的next方法,包装成onFulefilled函数。这主要是为了能够捕捉抛出的错误。
|
||||
接着,co将Generator函数的内部指针对象的next方法,包装成onFulfilled函数。这主要是为了能够捕捉抛出的错误。
|
||||
|
||||
```javascript
|
||||
function co(gen) {
|
||||
|
@ -66,7 +66,7 @@ function* foo(x, y) { ··· }
|
||||
function*foo(x, y) { ··· }
|
||||
```
|
||||
|
||||
由于Generator函数仍然是普通函数,所以一般的写法是上面的第三种,即星号紧跟在`function`关键字后面。本书也采用这种写法/。
|
||||
由于Generator函数仍然是普通函数,所以一般的写法是上面的第三种,即星号紧跟在`function`关键字后面。本书也采用这种写法。
|
||||
|
||||
### yield语句
|
||||
|
||||
|
@ -41,6 +41,8 @@ for (var i = 0; i < 10; i++) {
|
||||
a[6](); // 10
|
||||
```
|
||||
|
||||
上面代码中,变量`i`是`var`声明的,在全局范围内都有效。所以每一次循环,新的`i`值都会覆盖旧值,导致最后输出的是最后一轮的`i`的值。
|
||||
|
||||
如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。
|
||||
|
||||
```javascript
|
||||
@ -53,9 +55,11 @@ for (let i = 0; i < 10; i++) {
|
||||
a[6](); // 6
|
||||
```
|
||||
|
||||
上面代码中,变量`i`是`let`声明的,当前的`i`只在本轮循环有效,所以每一次循环的`i`其实都是一个新的变量,所以最后输出的是6。
|
||||
|
||||
### 不存在变量提升
|
||||
|
||||
`let`不像`var`那样,会发生“变量提升”现象。
|
||||
`let`不像`var`那样,会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。
|
||||
|
||||
```javascript
|
||||
console.log(foo); // ReferenceError
|
||||
@ -71,7 +75,7 @@ typeof x; // ReferenceError
|
||||
let x;
|
||||
```
|
||||
|
||||
上面代码中,由于块级作用域内`typeof`运行时,`x`还没有值,所以会抛出一个`ReferenceError`。
|
||||
上面代码中,由于`typeof`运行时,`x`还没有声明,所以会抛出一个`ReferenceError`。
|
||||
|
||||
### 暂时性死区
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user