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'有問題。但是相反,它說我的例子中第一行的變量有些問題。 –

回答

相關問題