TIL. 実行コンテキスト
2977 ワード
実行コンテキストとは?
実行するコードで提供される環境情報をまとめたオブジェクトは,JavaScript動的言語としての性質を最もよく知る概念である.
まずjavascriptは単一スレッド言語です.
JavaScriptエンジンがコードを読み込むときに実行する関数を見つけた場合、コンテキスト環境が作成されます.
以下に示す3つの情報が格納されている.
1. VariableEnvironment
2. LexicalEnvironment
3. thisBinding
この3つを説明する前に、JavaScriptの操作方法を理解する必要があります.
CallStackとEventQueueの2つの概念があります.
Javascriptエンジンがコードを再び読み取り、実行する必要がある関数を見つけた場合、コンテキスト環境を作成しcallstackに格納します.関数の変数が昇格し、順次実行されます.重複する関数がある場合はcallstackに積み上げます.stackは入る順序ではなく、最後に入る順序の最初の順序で実行されます.
EventQueueはJavaScriptエンジンが実行する必要がある関数を保存する場所です.
JavaScriptエンジンは入力された順序でCallStackとEventQueueをチェックし、CallStackが空の場合はEventQueueのイベント関数をCallStackにプッシュします.
コンテキスト環境に格納されている3つの態様を返し、理解します.
1.VariableEnvironment:現在のコンテキスト内の識別子の情報+外部環境情報、および宣言時のLexicalEnvironmentに変更を保存しません.
LexicalEnvironment:VariableEnvironmentを作成し、変更をコピーして適用します.
thisBinding:ターゲットオブジェクトを表示する識別子が必要です.
関数宣言文と関数式
スコフ&スコフチェーン
識別子の有効範囲として、関数の実行時に生成されます.
スコフ氏によると、関数の外の変数は中の関数からアクセスできるが、関数の中の変数は関数の外からアクセスできない範囲だという.
したがって,変数に近づくと,まず対応する走査範囲内で変数を探索し,そうでなければ位相走査を用い,そうでなければ探索プロセスを走査チェーンと呼ぶ.
実行するコードで提供される環境情報をまとめたオブジェクトは,JavaScript動的言語としての性質を最もよく知る概念である.
まずjavascriptは単一スレッド言語です.
JavaScriptエンジンがコードを読み込むときに実行する関数を見つけた場合、コンテキスト環境が作成されます.
以下に示す3つの情報が格納されている.
1. VariableEnvironment
2. LexicalEnvironment
3. thisBinding
この3つを説明する前に、JavaScriptの操作方法を理解する必要があります.
CallStackとEventQueueの2つの概念があります.
Javascriptエンジンがコードを再び読み取り、実行する必要がある関数を見つけた場合、コンテキスト環境を作成しcallstackに格納します.関数の変数が昇格し、順次実行されます.重複する関数がある場合はcallstackに積み上げます.stackは入る順序ではなく、最後に入る順序の最初の順序で実行されます.
EventQueueはJavaScriptエンジンが実行する必要がある関数を保存する場所です.
JavaScriptエンジンは入力された順序でCallStackとEventQueueをチェックし、CallStackが空の場合はEventQueueのイベント関数をCallStackにプッシュします.
コンテキスト環境に格納されている3つの態様を返し、理解します.
1.VariableEnvironment:現在のコンテキスト内の識別子の情報+外部環境情報、および宣言時のLexicalEnvironmentに変更を保存しません.
LexicalEnvironment:VariableEnvironmentを作成し、変更をコピーして適用します.
thisBinding:ターゲットオブジェクトを表示する識別子が必要です.
//1.
function a () {}
a() //실행 ok 함수선언문. 함수명 a가 곧 변수명
//2.
var b = function () {}
b() //실행 ok 익명 함수 표현식. 변수명 b가 곧 함수명
//3.
var c = function d () {}
c() //실행 ok 기명 함수표현식. 변수명은 c, 함수명은 d
d() // ERROR !!
ここで注意すべき点は,a b cは昇格対象であるがdではない.スコフ&スコフチェーン
識別子の有効範囲として、関数の実行時に生成されます.
スコフ氏によると、関数の外の変数は中の関数からアクセスできるが、関数の中の変数は関数の外からアクセスできない範囲だという.
したがって,変数に近づくと,まず対応する走査範囲内で変数を探索し,そうでなければ位相走査を用い,そうでなければ探索プロセスを走査チェーンと呼ぶ.
Reference
この問題について(TIL. 実行コンテキスト), 我々は、より多くの情報をここで見つけました https://velog.io/@jungzkxm/TIL.-실행-컨텍스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol