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