看看下面的代码:
var c = 50;
{
console.log(y);
let y = 50;
}
此代码应该抛出一个ReferenceError,它确实会抛出。但是在控制台中,附带异常的消息只是让我大吃一惊。它说:
ReferenceError:在初始化之前无法访问词法声明'c'
代码c
是声明的第一个变量。错误消息表明c
的声明有问题。它显然是块内的y
变量,导致异常。我们不能在声明之前使用使用let
声明的变量。当我在第一行声明另一个变量时,例如test
,错误消息将变为:
ReferenceError:初始化之前无法访问词法声明'test'
我错过了什么或者我对这个错误是对的吗?我有最新的Firefox Developer Edition(版本49.0a2)。
值得注意的另一件事是块只是一个封闭块,它不是函数体。
答案 0 :(得分:1)
此帖子是根据this meta post制作的,而不是关闭(请参阅this)。
正如@Martin Smith和@Sam Onela所说(1,2),此问题已在第53/54版中得到解决。 Relevant bugzilla report,由Devashish制作(原创海报)。