1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 03:02:21 +00:00

docs(let): edit block scope

This commit is contained in:
ruanyf 2016-12-01 16:06:35 +08:00
parent 8d8db4e667
commit bd2d951f45

View File

@ -292,7 +292,7 @@ try {
上面代码的两种函数声明根据ES5的规定都是非法的。 上面代码的两种函数声明根据ES5的规定都是非法的。
但是,浏览器没有遵守这个规定,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。 但是,浏览器没有遵守这个规定,为了兼容以前的旧代码,还是支持在块级作用域之中声明函数,因此上面两种情况实际都能运行,不会报错。不过,“严格模式”下还是会报错。
```javascript ```javascript
// ES5严格模式 // ES5严格模式
@ -303,7 +303,7 @@ if (true) {
// 报错 // 报错
``` ```
ES6引入了块级作用域明确允许在块级作用域之中声明函数。 ES6 引入了块级作用域,明确允许在块级作用域之中声明函数。
```javascript ```javascript
// ES6严格模式 // ES6严格模式
@ -314,7 +314,7 @@ if (true) {
// 不报错 // 不报错
``` ```
并且ES6规定块级作用域之中函数声明语句的行为类似于`let`,在块级作用域之外不可引用。 ES6 规定,块级作用域之中,函数声明语句的行为类似于`let`,在块级作用域之外不可引用。
```javascript ```javascript
function f() { console.log('I am outside!'); } function f() { console.log('I am outside!'); }
@ -328,7 +328,7 @@ function f() { console.log('I am outside!'); }
}()); }());
``` ```
上面代码在ES5中运行会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。 上面代码在 ES5 中运行会得到“I am inside!”,因为在`if`内声明的函数`f`会被提升到函数头部,实际运行的代码如下。
```javascript ```javascript
// ES5版本 // ES5版本
@ -341,7 +341,7 @@ function f() { console.log('I am outside!'); }
}()); }());
``` ```
ES6的运行结果就完全不一样了会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。 ES6 的运行结果就完全不一样了会得到“I am outside!”。因为块级作用域内声明的函数类似于`let`,对作用域之外没有影响,实际运行的代码如下。
```javascript ```javascript
// ES6版本 // ES6版本