16

以下のコードを見てください。

var c = 50;

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

このコードは ReferenceError をスローすると予想されますが、実際にスローされます。しかし、コンソールでは、例外に添付されたメッセージが私の心を吹き飛ばしました。それは言います:

ReferenceError: 初期化前にレキシカル宣言 'c' にアクセスできません

コードcでは、宣言された最初の変数です。エラー メッセージは、 の宣言に問題があることを示していますc。それは明らかにyブロック内の変数であり、例外を引き起こしています。宣言前にusing 宣言された変数を使用することはできませんlet。たとえば、最初の行で別の変数を宣言するとtest、エラー メッセージが次のように変わります。

ReferenceError: 初期化前にレキシカル宣言 'test' にアクセスできません

私は何かを見逃していますか、それともバグについて正しいですか? 最新の Firefox Developer Edition (バージョン 49.0a2) を使用しています。

注目に値するもう 1 つのことは、ブロックは単なる囲みブロックであり、関数の本体ではないということです。

4

1 に答える 1