Javascript 这是firefox开发者版中的一个bug吗?

Javascript 这是firefox开发者版中的一个bug吗?,javascript,firefox,console.log,referenceerror,firefox-developer-edition,Javascript,Firefox,Console.log,Referenceerror,Firefox Developer Edition,请看下面的代码: var c = 50; { console.log(y); let y = 50; } 这段代码预计会抛出一个ReferenceError,它确实会抛出。但在控制台中,附加异常的消息让我大吃一惊。它说: ReferenceError:在初始化之前无法访问词法声明“c” 在代码c中,是声明的第一个变量。错误消息表明c的声明有问题。显然是块内的y变量导致了异常。我们不能在声明前使用let声明的变量。当我在第一行声明另一个变量时,例如test,错误消息将更改为:

请看下面的代码:

var c = 50;

{
    console.log(y);
    let y = 50;
}
这段代码预计会抛出一个ReferenceError,它确实会抛出。但在控制台中,附加异常的消息让我大吃一惊。它说:

ReferenceError:在初始化之前无法访问词法声明“c”

在代码
c
中,是声明的第一个变量。错误消息表明
c
的声明有问题。显然是块内的
y
变量导致了异常。我们不能在声明前使用
let
声明的变量。当我在第一行声明另一个变量时,例如
test
,错误消息将更改为:

ReferenceError:无法在初始化之前访问词法声明“test”

我是遗漏了什么,还是我的错误是对的?我有最新的Firefox开发者版(49.0a2版)


另一件值得注意的事情是,块只是一个封闭块,而不是函数体

这篇文章是根据,而不是被关闭(见)



如前所述(,),该问题已在53/54版中解决,制作人(原始海报)。

如果你认为这是一个bug,那么制作一个bug报告,他们会说是或不是。bug也存在于47.0.1版本中,最小的代码是
var x;{y;let y;}
@Oriol我报告了错误。这里是链接:是的,我在54.0a2版本中测试了这个,请参见
ReferenceError:cannotaccesslexicaldeclaration'y'beforeignization
。我投票关闭它,因为它不能再被复制了。