14

在下面的代码看看:这是Firefox开发者版本中的错误吗?

var c = 50; 

{ 
    console.log(y); 
    let y = 50; 
} 

此代码预计将抛出的ReferenceError和它的作用。但在控制台中,附有例外的消息让我大开眼界。它说:

ReferenceError: can't access lexical declaration 'c' before initialization

在代码c是第一个变量声明。错误消息表明c的声明出现问题。这很明显是块内的y变量,导致异常。我们不能使用声明前使用let声明的变量。当我在第一行声明另一个变量,说test,错误信息更改为:

ReferenceError: can't access lexical declaration 'test' before initialization

我缺少的东西还是我说得对错误?我有最新的Firefox开发者版(版本49.0a2)。

值得注意的另一件事是,该块只是一个封闭块,它不是函数的主体。

+0

@Kaiido所以,这是一个错误?因为Chrome对于这种情况具有预期的错误消息。 –

+4

如果您认为这是一个错误,那么比创建一个错误报告,他们会说yay或nay。 – epascarello

+0

@Bergi错误信息让我感到困惑,因为我认为它会说变量'y'有问题。但是相反,它说我的例子中第一行的变量有些问题。 –

回答