From d042de53e651346510b6489243954b5931f8da19 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 8 Feb 2017 19:22:44 +0800 Subject: [PATCH] =?UTF-8?q?docs(let):=20edit=20=E5=9D=97=E7=BA=A7=E4=BD=9C?= =?UTF-8?q?=E7=94=A8=E5=9F=9F=E5=86=85=E7=9A=84=E5=87=BD=E6=95=B0=E5=A3=B0?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/let.md b/docs/let.md index 77f6757..73a57cb 100644 --- a/docs/let.md +++ b/docs/let.md @@ -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`,即会提升到全局作用域或函数作用域的头部。