1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 03:02:21 +00:00
This commit is contained in:
Ruan Yifeng 2015-03-28 08:30:28 +08:00
parent 15bcc0e81a
commit 9d2ef28e22

View File

@ -140,7 +140,7 @@ bar(); // 报错
上面代码中调用bar函数之所以报错是因为参数x默认值等于另一个参数y而此时y还没有声明属于”死区“。
需要注意的是,函数参数的作用域与函数体的作用域是分离的
需要注意的是,函数的作用域是其声明时所在的作用域。如果函数A的参数是函数B那么函数B的作用域不是函数A
```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();
```
### 不允许重复声明