看看下面的代码:
var c = 50;
{
console.log(y);
let y = 50;
}
这段代码预计会抛出一个 ReferenceError 并且确实如此。但是在控制台中,带有异常的消息让我大吃一惊。它说:
ReferenceError:在初始化之前无法访问词法声明'c'
在代码c
中是第一个声明的变量。错误消息表明 . 的声明有问题c
。这显然是y
块内的变量,导致异常。我们不能使用let
在声明之前使用声明的变量。当我在第一行声明另一个变量时,例如test
,错误消息变为:
ReferenceError:在初始化之前无法访问词法声明“test”
我错过了什么还是我对错误的看法是正确的?我有最新的 Firefox 开发者版(49.0a2 版)。
另一件值得注意的事情是该块只是一个封闭块,它不是函数的主体。