1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00

docs(let): edit 块级作用域内的函数声明

This commit is contained in:
ruanyf 2017-02-08 19:22:44 +08:00
parent e8db4536b8
commit d042de53e6

View File

@ -381,7 +381,9 @@ function f() { console.log('I am outside!'); }
}());
```
很显然这种行为差异会对老代码产生很大影响。为了减轻因此产生的不兼容问题ES6在[附录B](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics)里面规定,浏览器的实现可以不遵守上面的规定,有自己的[行为方式](http://stackoverflow.com/questions/31419897/what-are-the-precise-semantics-of-block-level-functions-in-es6)。
但是,如果你真的在 ES6 浏览器中运行一下上面的代码,是会报错的,这是为什么呢?
原来ES6 改变了块级作用域内声明的函数的处理规则显然会对老代码产生很大影响。为了减轻因此产生的不兼容问题ES6在[附录B](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-block-level-function-declarations-web-legacy-compatibility-semantics)里面规定,浏览器的实现可以不遵守上面的规定,有自己的[行为方式](http://stackoverflow.com/questions/31419897/what-are-the-precise-semantics-of-block-level-functions-in-es6)。
- 允许在块级作用域内声明函数。
- 函数声明类似于`var`,即会提升到全局作用域或函数作用域的头部。