初期化される前にlet
とconst
の値にアクセスすると、temporal dead zoneと呼ばれるものが原因でReferenceError
が発生する可能性があると聞きました。
一時的なデッドゾーンとは何ですか、スコープと巻き上げにどのように関係し、どのような状況で遭遇しますか?
巻き上げ:let
、const
、var
はすべてホイストプロセスになります。
(どういうことかというと、上位になり、スコープの最上部で宣言します。)
初期化:
var
も初期プロセスをスローし、undefined
の初期値を取得します。let
、const
は初期プロセスをスローしなかったため、それらの値は既に宣言されていてもアクセスできません。何がtemporal dead zone
にそれらを入れますつまり、すぐに:
巻き上げプロセス:
var
、let
、const
初期化プロセス:var
Let変数とconst変数の場合、基本的に、Temporal Dead Zoneはゾーンです
「変数が宣言される前」、
つまり、これらの変数の値にアクセスできない場合、エラーがスローされます。
例.
let sum = a + 5; //---------
//some other code // | ------> this is TDZ for variable a
// |
console.log(sum) //---------
let a = 5;
上記のコードはエラーになります
変数 'a'にvarを使用しても同じコードはエラーになりません。
例.
let sum = a + 5;
console.log(sum) //prints 10
var a = 5;