機能と可変環境はJavaScriptでどのように働きますか?👀
3707 ワード
私は、あなたが前に機能を持っていたということを知っています。しかし、あなたは本当に機能がどのように機能の背後にJavascriptで動作しますか?
JavaScriptはどのように機能と変数環境を扱いますか?
一緒にそれを見つけましょう.
以下に私たちは非常に小さなシンプルなプログラムがあります.はい、これは読書にわずか数分であなたの心を吹くつもりです.
var x = 1;
a();
console.log(x);
function a() {
var x = 10;
console.log(x);
}
開発者コンソールを開き、キーボードショートカットCtrl - Shift J(Windowsで)またはCtrlオプションJを使用します.コンソールタブでは、JavaScriptが上記のプログラムを実行すると、これを見ることができます.今まで、あなたがしたすべては、あなたがすでに知っていたものでありえました.しかし、本当の楽しみは、現在始まっています.
1行目にデバッガを置きましょう.
ここでJavaScriptはプログラムのグローバル実行コンテキストを作成します.これは、コールスタックにプッシュされ、コントロールは1行目です.
おお、待てグローバル実行コンテキストとは何か?次に読んでください.
グローバル実行コンテキストには2つのコンポーネントがあります.
1 -変数環境相もメモリフェーズと呼ばれます.
2 -コード実行段階.
変数環境変数では、JavaScriptは変数と関数にメモリを割り当てます.変数のために、それはキーワード'未定義'を割り当てます、そして、機能のために、それはその機能体自体をメモリとして割り当てます.
また、コード実行フェーズでは、JavaScriptはプログラム行を順番に実行します.
これがクリアされました.…を読む.
私たちのプログラムでは、制御は1行目です.JavaScriptは' x 'と' a 'に割り当てられ、関数本体を割り当てられています.
デバッガを2行目にし、デバッガの再生ボタンをクリックします.
その行1が実行されたので、JavaScriptは値1を変数xに割り当てました.
デバッガを6行目にし、デバッガの再生ボタンをクリックしましょう.
ここでJavaScriptは関数a ()の新しい実行コンテキストを作成しました.これは呼び出しスタックにプッシュされます.そして、a ()に制御を行います.これはここで終わりません.JavaScriptはまた、関数a ()に対して新しいローカルメモリとグローバルメモリを作成しました.
メモリ・フェーズに関しては、JavaScriptはキーワード'未定義'を関数a ()のローカルメモリに存在する変数に割り当てた.
デバッガを7行目にし、デバッガの再生ボタンをクリックします.
JavaScriptはローカルメモリ内の変数Xを探し、変数xに値' 10 'を割り当てます.
デバッガを3行目にし、デバッガの再生ボタンをクリックしましょう.
呼び出しスタックでは、関数Aの実行コンテキストがポップされ、現在の3行目がグローバル実行コンテキストに戻ることに注意してください.
今すぐコンソールタブを開くと、下の行が表示されます.
今度はデバッガ再生ボタンをクリックします.
JavaScriptは残りのプログラムを実行しました.グローバルメモリ内の変数xを探し、変数xに値' 1 'を割り当てます.そして今、グローバル実行コンテキストがスタックからポップされた.コールスタックが空です.
コンソールのタブに頭をつけ、下の行が表示されます.
このように、機能と可変環境はJavaScriptで一緒に働きます.
あなたは、吹き飛ばされませんでしたか?
ハハ!私は、これが全く驚くべきものであるということを知っています.
あなたがこれまでにそれを作ったならば、あなたはちょうど学びました
環境.
Reference
この問題について(機能と可変環境はJavaScriptでどのように働きますか?👀), 我々は、より多くの情報をここで見つけました https://dev.to/arjunjunna/how-do-functions-and-variable-environment-work-together-in-javascript-4c4iテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol