mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-25 03:02:21 +00:00
edit let
This commit is contained in:
parent
15bcc0e81a
commit
9d2ef28e22
17
docs/let.md
17
docs/let.md
@ -140,7 +140,7 @@ bar(); // 报错
|
|||||||
|
|
||||||
上面代码中,调用bar函数之所以报错,是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“。
|
上面代码中,调用bar函数之所以报错,是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“。
|
||||||
|
|
||||||
需要注意的是,函数参数的作用域与函数体的作用域是分离的。
|
需要注意的是,函数的作用域是其声明时所在的作用域。如果函数A的参数是函数B,那么函数B的作用域不是函数A。
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
|
|
||||||
@ -155,7 +155,20 @@ bar();
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
上面代码中,函数bar的参数func,默认是一个匿名函数,返回值为变量foo。这个匿名函数运行时,foo只在函数体外声明,内层的声明还没执行,因此foo指向函数体外的声明,输出outer。
|
上面代码中,函数bar的参数func,默认是一个匿名函数,返回值为变量foo。这个匿名函数的作用域就不是bar。这个匿名函数声明时,是处在外层作用域,所以内部的foo指向函数体外的声明,输出outer。它实际上等同于下面的代码。
|
||||||
|
|
||||||
|
|
||||||
|
```js
|
||||||
|
let foo = 'outer';
|
||||||
|
let f = x => foo;
|
||||||
|
|
||||||
|
function bar(func = f) {
|
||||||
|
let foo = 'inner';
|
||||||
|
console.log(func()); // outer
|
||||||
|
}
|
||||||
|
|
||||||
|
bar();
|
||||||
|
```
|
||||||
|
|
||||||
### 不允许重复声明
|
### 不允许重复声明
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user