私はECMAScriptの2015(ES6)に新しいですし、私はES6の時間的なデッドゾーンについて読んでいます:あなたはそれがエラーをスロー宣言する前にtypeof演算と変数をテストする場合ES6で明らかにECMAScriptの2015時間的なデッド・ゾーン
if(typeof x === "undefined") {
console.log("x doesn't exist or is undefined");
} else {
// safe to refer to x....
}
let x = 5; //script.js:1 Uncaught ReferenceError: x is not defined
console.log(typeof x);
let x = 5; //script.js:1 Uncaught ReferenceError: x is not defined
どうしてですか?これはバグですか?
"*変数をテストすると*" - それを行う理由は全くありません。関連するコードを読んで、スコープ内で宣言されているかどうかを確認するだけです。これは常に(プログラマまたは彼のツールによって)静的に決定できます。動的に行う必要はありません。 – Bergi
Arcanaについて心配するのをやめ、良いプログラムを書く方法に焦点を合わせます。その1つの側面は、変数をスコープの先頭に宣言することです。 –