改善 <<> and 宣言を使用したコンテンツも含まれます。 少し難しい例 クレーム宣言のtrap
この例では、
を出力する理由です。変数は存在しますが、割り当てられていません。 var
ステートメントはスコープの最上部に宣伝されていますが、初期化は改善されていません。これが、エラーをスローする代わりに、最初の出力console.log(x); // 输出:undefined
var x = 5;
console.log(x); // 输出:5
var x
一時的な死んだエリア(TDZ)x = 5
console.log(x)
この例では、undefined
ステートメントが改善されましたが、初期化前に一時的な死んだエリア(TDZ)にありました。初期化がx
につながる前に、とは異なり、同様の状況でのみ
let
に戻ります。 const
console.log(y); // 抛出ReferenceError: Cannot access 'y' before initialization
let y = 10;
console.log(y); // 输出:10
let y
y
ReferenceError
一時的な死んだエリア(TDZ)var
一時的な死んだエリアについて言えば、これは初期化の前にvar
とundefined
宣言されています。最初のアクセスの前に
にlet
const
を与える理由です。スクリプトの準備が整う前に読み込もうとしています。
let
const
クラスを改善する方法は同じではありません。 var
undefined
function setupEventHandler() {
handleClick(); // 可运行!
const config = {
debug: true,
};
function handleClick() {
if (config?.debug) {
// 未定义!
console.log("Debug mode");
}
}
}
setupEventHandler();
以上がJavaScript Hoisting-何が動くのか、何が続くかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。