「実行環境」、この言葉を聞くと混乱するかもしれません。多くの文献では「実行コンテキスト」とも呼ばれていますが、実際には同じものです。書籍や資料では非常に複雑に説明されていることがよくありますが、この部分は JS で理解するのが難しいため、この記事ではこの概念を簡単に説明します。
まず例を見てみましょう:
ブラウザコンソールに次のように入力します:
var a=1;console.log(window.a);console.log(a);
結果は出力1です。明らかに、変数はウィンドウオブジェクトの属性です。
それでは、変数 a の実行環境は何ですか?
答えるのは難しくないと思います。それはウィンドウ オブジェクトです。確かに、ウィンドウ オブジェクトは変数 a の実行環境であり、最も周辺的な実行環境であるため、グローバル実行環境と呼ばれます。ここで、a はデフォルトでグローバル実行環境に定義されているため、a と window.a は同じです。
次の例を見てみましょう:
function output(){ var a=1; console.log(a); }
この例では、a が関数内で定義されており、a の実行環境が関数の実行環境 (出力) になります。
ウィンドウに
console.log(a);
と入力すると、 a は関数の出力でのみ表示されるため、エラーが報告されます。
しかし、
console.log(output);
と入力すると、関数は正常に表示されます。関数出力の実行環境はウィンドウなので、もちろんウィンドウに表示することもできます。
出力関数がウィンドウ環境にあることがわかりました。プログラムが出力関数を実行すると、次のように推測できるはずです。
ウィンドウ環境が出力関数環境に制御を渡し、出力環境がホーム フィールドになります。
それでは、舞台裏で実際に何が起こっているのでしょうか?
JS には実行環境スタックまたは実行コンテキスト スタックと呼ばれるものがあります。スタックが何であるかわからない場合は、データ構造を記入する必要があります。
箱を積み上げたように、グローバル実行環境は実行環境スタックの一番下に配置されます。出力関数を実行する場合、この関数の実行環境もボックスにパッケージ化され、グローバル実行環境の上に「スタック」されます。グローバル環境で他の関数を実行し続けたい場合は、下のボックスから何かを取得するのと同じように、最初に出力関数を実行する必要があります。比喩的に言えば、下のボックスを移動する前に上のボックスを取り除くようなものです。
関連する推奨事項:
JavaScriptの型、パラメータ、実行環境を理解する方法
以上がJS実行環境例の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。