ホームページ >ウェブフロントエンド >jsチュートリアル >`let` ステートメントは JavaScript でグローバル プロパティを作成しますか?
ステートメントでグローバル プロパティを導入しますか?
JavaScript では、var 宣言によりグローバル オブジェクトのプロパティが作成されます。ただし、ES6 で導入された宣言では、ブロック レベルの可視性を使用して字句スコープを強制します。
宣言でグローバル プロパティを作成しますか?
ECMAScript 仕様に従って、letステートメントはグローバル オブジェクトのプロパティを作成しません。グローバル バインディングは、主にグローバル環境のオブジェクト環境レコードに保存され、グローバル オブジェクトにリンクされます。 var を使用した関数、ジェネレーター、変数の宣言はこのオブジェクト環境レコードに含まれますが、let などの他の宣言は宣言型環境レコードに保存されます。
説明
グローバル オブジェクトにプロパティを直接作成する var とは異なり、バインディングを宣言的な環境レコード内に含めます。このレコードは内部データ構造を利用しているため、外部からアクセスできません。一方、オブジェクト環境レコードは、データ ストレージに JS オブジェクトを利用し、各オブジェクト プロパティがバインディングを表します。その結果、var バインディングはグローバル オブジェクトのプロパティとして反映されます。
ブラウザと Node.js の動作
ブラウザでは、Firefox などの一部の実装が矛盾する動作を示します。仕様。バインディングをグローバル オブジェクト (ウィンドウ) のプロパティとして表示させます。ただし、厳密な Node.js 環境では、--harmony または --harmony_top_level フラグを使用すると、宣言型環境レコード内でバインディングが正しく分離されます。
結論
にもかかわらず字句スコープにより、let 宣言はグローバル オブジェクトのプロパティを導入しません。代わりに、それらはグローバル環境の宣言的環境レコードに限定され、カプセル化とブロックレベルの可視性が強調されます。
以上が`let` ステートメントは JavaScript でグローバル プロパティを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。