JS実行環境とスコープ分析

小云云
リリース: 2018-03-17 11:50:34
オリジナル
1203 人が閲覧しました

実行環境: 変数または関数がアクセスできる他のデータを定義し、それぞれの動作を決定します。各実行環境には変数オブジェクトが関連付けられており、環境内で定義されたすべての変数と関数はこのオブジェクトに格納されます。

グローバル実行環境: 最も周辺的な実行環境です。 Web ブラウザでは、グローバル実行環境はウィンドウ オブジェクトとみなされ、すべてのグローバル変数と関数はウィンドウ オブジェクトのプロパティとメソッドとして作成されます。実行環境内のすべてのコードが実行されると、その環境は、その環境に保存されているすべての変数および関数の定義とともに破棄されます。

実行フローメカニズム: 各関数には独自の実行環境があります。実行フローが関数に入ると、関数の環境が環境スタックにプッシュされます。関数が実行されると、スタックはその環境をポップし、制御を前の実行環境に返します。

! !環境内でコードが実行されると、変数オブジェクトのスコープ チェーンが作成されます。スコープ チェーンの目的は、実行環境がアクセスできるすべての変数と関数への順序付けされたアクセスを保証することです。スコープ チェーンのフロント エンドは常に、現在実行中のコードが配置されている環境の変数オブジェクトです。この環境が関数の場合、そのアクティブ オブジェクトは変数オブジェクトとして使用されます。アクティブなオブジェクトには、最初は 1 つの変数 (arguments オブジェクト) だけが含まれています。スコープ チェーン内の次の変数オブジェクトは、それを含む (外部) 環境から取得され、その後の変数オブジェクトは、次の含まれる環境から取得されます。このようにして、グローバル環境に進みます。グローバル実行環境の変数オブジェクトは常にスコープ チェーンの最後のオブジェクトになります。

内部環境はスコープチェーンを通じてすべての外部環境にアクセスできますが、外部環境は内部環境の変数や関数にはアクセスできません。

拡張スコープチェーン

実行環境のタイプ: グローバルとローカル。

一部のステートメントでは、スコープ チェーンのフロントエンドに変数オブジェクトを一時的に追加でき、その変数オブジェクトはコードの実行後に削除されます。

  • try-catch ステートメントの catch ブロック (スローされたエラー オブジェクトの宣言を含む新しい変数オブジェクトを作成します);

  • with ステートメント (指定されたオブジェクトをスコープの中央に追加します)。

ブロックレベルのスコープはありません

JavaScriptの場合、forステートメントで作成した変数は、forループの実行が終了した後もループの外の実行環境に残ります。

1. 変数宣言

var を使用して宣言された変数は、最も近い環境に自動的に追加されます。関数内では、最も近い環境は関数のローカル環境です。with ステートメントでは、最も近い環境は関数環境です。 var 宣言を行わずに変数を初期化すると、その変数は自動的にグローバル環境に追加されます。

2. クエリ識別子

環境内で読み取りまたは書き込みのために識別子が参照される場合、その識別子が実際に何を表しているのかを判断するために検索を実行する必要があります。検索プロセスはスコープの先頭から始まり、指定された名前に一致する識別子を見つけるまで進みます。

関連する推奨事項:

JS 実行環境の例の紹介

実行環境とスコープの例の詳細な説明

JavaScript スコープ チェーンと実行環境

以上がJS実行環境とスコープ分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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