ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript での時間的デッド ゾーン (TDZ) とホイスティング:

JavaScript での時間的デッド ゾーン (TDZ) とホイスティング:

DDD
リリース: 2024-09-18 17:39:06
オリジナル
512 人が閲覧しました

Temporal Dead Zone (TDZ) and Hoisting in JavaScript:

JavaScript での時間デッド ゾーン (TDZ) とホイスティング:

  1. 時間的デッド ゾーン (TDZ): 時間的デッド ゾーンとは、スコープ (ブロックや関数など) に入ってから変数が宣言されるまでの時間を指します。このゾーンでは、変数にアクセスしようとすると ReferenceError が発生します。 TDZ は、let、const、class を使用して初期化される前に宣言された変数に対して存在します。

例:

console.log(myVar); // 未定義
console.log(myLet); // ReferenceError: 初期化前に 'myLet' にアクセスできません

var myVar = 5;
let myLet = 10;

上記の例では、myVar は var を使用して宣言されているため、ホイストされ、未定義に初期化されます。ただし、myLet は宣言されるまで時間的デッド ゾーンにあるため、宣言前にアクセスしようとすると ReferenceError がスローされます。

TDZ に関する重要なポイント:

let または const を使用して宣言された変数は、ホイストされていても、ブロック スコープ内で宣言される前はアクセスできません。

これにより、明示的に初期化される前に変数を使用することができなくなります。


  1. ホイスティング: ホイスティングとは、コンパイル段階で変数と関数の宣言がスコープ (グローバル スコープまたは関数/ブロック スコープ) の先頭に移動される JavaScript の動作を指します。ただし、宣言のみがホイストされ、初期化はホイストされません。

例:

console.log(myVar); // 未定義
var myVar = 5;

上記の例では、myVar の宣言が先頭に巻き上げられていますが、初期化 (myVar = 5) は書き込まれた場所に残ります。そのため、初期化前に console.log(myVar) が呼び出される場合、unknown が返されます。

var、let、const、関数のホイスティング:

var: var で宣言された変数はホイストされ、unknown で初期化されます。

console.log(myVar); // 未定義
var myVar = 10;

let と const: let と const で宣言された変数はホイストされますが、初期化されません。これらは初期化されるまで TDZ に残ります。

console.log(myLet); // ReferenceError
let myLet = 20;

関数宣言: 関数宣言は完全にホイストされます。つまり、コード内で関数が宣言される前でも関数を呼び出すことができます。

myFunc(); // 「こんにちは!」

関数 myFunc() {
console.log("こんにちは!");
}


ホイスティングと TDZ の主な違い:

ホイスティングにより、変数と関数の宣言がスコープの最上位に持ち上げられます。

一時的なデッド ゾーンは let、const、class で発生します。変数はホイストされますが、初期化されるまでアクセスできません。これにより、宣言前に変数にアクセスできなくなります。

以上がJavaScript での時間的デッド ゾーン (TDZ) とホイスティング:の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート