看看下面的代码:
var c = 50;
{
console.log(y);
let y = 50;
}
这段代码应该会抛出一个 ReferenceError 而它确实会抛出。但是在控制台中,附带异常的消息让我大吃一惊。它说:
ReferenceError: can't access lexical declaration 'c' before initialization
在代码中,c
是声明的第一个变量。错误消息表明 c
的声明有问题。显然是 block 内的 y
变量导致了异常。我们不能在声明之前使用使用 let
声明的变量。当我在第一行声明另一个变量时,比如 test
,错误消息变为:
ReferenceError: can't access lexical declaration 'test' before initialization
我是否遗漏了什么或者我对错误的看法是否正确?我有最新的 Firefox Developer Edition(版本 49.0a2)。
另一件值得注意的事情是 block 只是一个封闭 block ,它不是函数体。
最佳答案
本帖是按照 this meta post 制作的,而不是关闭的(见 this )。
正如 @Martin Smith 和 @Sam Onela 所说( 1 , 2 ),这个问题在版本 53/54 中得到了解决。 Relevant bugzilla report ,由 Devashish 制作(原始海报)。
关于javascript - 它是 firefox 开发者版中的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38258719/