実行コンテキスト
12553 ワード
Javascriptの勉強と整理をするよ。
ES 6からJavaScriptまでのプロセス全体を学習します.
Execution Context
実行コンテキストとは?
実行に必要なコードストリームの背景となる条件/環境を表します.
ES 5環境において、同じ条件/環境を有する場合は、関数またはグローバル空間である.
グローバルスペースは、JavaScriptファイルの実行時に開きます.
関数を実行するとき、または同じグローバル空間内で、同じ環境にあると考えられます.
JavaScriptの実行コンテキストをクリアします.
var a = 1;
function outer() {
console.log(a); // (1)
function inner() {
console.log(a); // (2)
var a = 3;
}
inner();
console.log(a); // (3)
}
outer();
console.log(a); // (4)
上記の1~5号の実行はどのように発生し、処理されているのでしょうか。
まず一番奥から、最後に入ってきたのは最も遠い曖昧な概念stackによって引き起こされた.
実行に関与するスタックを呼び出しスタック(call stack)と呼び、この呼び出しスタックによって上述の操作が実行される.
call stack:現在実行されている関数はどれですか.次に、呼び出す必要がある関数のデータ構造を制御します.
Execution Contextの構成
まず、上のコードから内部を表示します.
VariableEverronmentとLexcialEnvironmentで構成されています.
Variable Environment
Lexical Environment
Lexical Environment
LexicalEnvironmentには、環境レコードと外部環境リファレンスが含まれています.
私たちはこの2つの状況を理解します.
environmentRecord
EnvironmentRecordとは、現在のコンテキストを収集して含む識別子です.
これは別の言い方でHostingと呼ばれています.
Hoisting
識別子情報を実行コンテキストの上部にドラッグします.
次のコードを見て、どんな識別子があるか、転送方法を見てみましょう.
console.log(a());
console.log(b());
console.log(c());
function a() {
return 'a';
}
var b = function bb() {
return 'bb';
}
var c = function() {
return 'c';
}
まず,上のコードにはa,b,cを識別子としているので,それを上に引く.関数宣言文の場合は、関数全体を明確に昇格させる必要があります.
function a() {
return 'a';
}
console.log(a());
console.log(b());
console.log(c());
var b = function bb() {
return 'bb';
}
var c = function() {
return 'c';
}
次に、b、cへの案内を完了し、以下に示す.function a() {
return 'a';
}
var b;
var c;
console.log(a());
console.log(b());
console.log(c());
b = function bb() {
return 'bb';
}
c = function() {
return 'c';
}
環境記録は次のとおりです.{
function a() {...},
b,
c
}
上記のような形で情報を収集する.현재 전역 콘텍스트에 선언되어진 식별자들이 무엇이 있는 지?
を探して順番に情報を収集すると、ハウスティンと同じ概念になったという.outerEnvironmentReference
これは、外部環境への参照が、現在の実行コンテキストに関連する外部実行コンテキストの識別子情報を収集することを意味する.
SCOPE
:変数の有効範囲
変数の有効範囲はexecution contextによって生成されます.すなわち、実行コンテキストによって収集された情報にのみアクセスでき、この変数は実行コンテキスト内にのみ存在する.
内部からouter、グローバルの変数にアクセスできます.
ただし、outerまたはグローバルに参照されていないオブジェクトのため、内部宣言された変数にアクセスできません.
LexicalEnvironmentから収集された情報がないため、内部に書き込まれた変数にアクセスできません.
すなわち、変数の有効範囲は実行コンテキストによって作成され、scopeチェーンも最終的に実行コンテキストによって決定される.
Reference
この問題について(実行コンテキスト), 我々は、より多くの情報をここで見つけました https://velog.io/@jy777hi/JavaScript-핵심-개념-실행-콘텍스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol