在下面的代碼看看:這是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)。
值得注意的另一件事是,該塊只是一個封閉塊,它不是函數的主體。
@Kaiido所以,這是一個錯誤?因爲Chrome對於這種情況具有預期的錯誤消息。 –
如果您認爲這是一個錯誤,那麼比創建一個錯誤報告,他們會說yay或nay。 – epascarello
@Bergi錯誤信息讓我感到困惑,因爲我認爲它會說變量'y'有問題。但是相反,它說我的例子中第一行的變量有些問題。 –