JavaScript.js#7実行コンテキストとモジュール
9967 ワード
実行コンテキストは、JavaScriptを実行するときに作成される実行単位です.
コンテキスト概念の実行
ECMAScriptでは,実行可能コンテキストは実行可能コードの抽象概念であり,実行可能JavaScriptコードブロックが実行される環境と見なすことができる.
ECMAScriptには3つのケースがあります.グローバルコード eval()関数によって実行されるコード 関数でコードが実行される場合、 コードが実行されると、実行コンテキストが作成され、実行コンテキストで現在実行されているコンテキストとみなされます.
ひょうじチェーン
JavaScriptのコードを理解するには、Scopeチェーンを理解する必要があります.
JavaScript関数のブロック(つまり{}のブロック)に有効範囲がありません.
EX
関数だけが有効範囲の単位です.
関数オブジェクトで、この有効範囲を表すscopeは、scopeチェーンと呼ばれる接続リストとして管理されます.
スキャンチェーンは、現在実行されているコンテキスト変数のオブジェクトと親コンテキストのスキャンチェーンを参照します.
EX
print関数は、value変数が「value 2」であることを再宣言します.
print()という名前の関数オブジェクトを最初に作成すると、コンテキスト参照グローバルオブジェクトのスキャンが実行されます.したがって、各関数の実行時に作成される実行コンテキストのscopeチェーンには、グローバルオブジェクト(value)と、前に作成した変数オブジェクト(value 2)が追加されます.これがvalue 2がコンソールに現れる理由です.
エンクロージャ
EX
エンクロージャとはclosed,boundを指し,ライフサイクル終了後の外部関数の変数を参照する関数である.
つまり、終了したコンテキスト内の変数のパターンを使用します.
このモードこそ関数式のプログラミングを可能にした.
EX
EX
の最後の部分
以上がコンテキストとモジュールです.
次の投稿では、関数プログラミングについて説明します.
ソース内部JavaScript
コンテキスト概念の実行
ECMAScriptでは,実行可能コンテキストは実行可能コードの抽象概念であり,実行可能JavaScriptコードブロックが実行される環境と見なすことができる.
ECMAScriptには3つのケースがあります.
console.log("전역 컨텍스트");
function context1() {
console.log("컨텍스트 1");
}
function context2() {
context1();
console.log("컨텍스트 2");
}
context2();
// 전역 컨텍스트
// 컨텍스트 1
// 컨텍스트 2
上記の例に示すように、グローバル実行コンテキストは最初に実行され、次に新しい関数を呼び出して新しいコンテキストを作成および実行し、終了時に戻ります.これにより、グローバル実行コンテキストの実行が完了すると、すべての実行が終了します.ひょうじチェーン
JavaScriptのコードを理解するには、Scopeチェーンを理解する必要があります.
JavaScript関数のブロック(つまり{}のブロック)に有効範囲がありません.
EX
function example() {
if () {}
for () {}
}
上記の例に示すようにifとforはこのようにします.関数だけが有効範囲の単位です.
関数オブジェクトで、この有効範囲を表すscopeは、scopeチェーンと呼ばれる接続リストとして管理されます.
スキャンチェーンは、現在実行されているコンテキスト変数のオブジェクトと親コンテキストのスキャンチェーンを参照します.
EX
const value = "value";
function print(){
const value = "value2";
function printV() {
return var;
}
console.log(printV());
}
print(); // value2
グローバル変数はvarを「value」に設定しました.print関数は、value変数が「value 2」であることを再宣言します.
print()という名前の関数オブジェクトを最初に作成すると、コンテキスト参照グローバルオブジェクトのスキャンが実行されます.したがって、各関数の実行時に作成される実行コンテキストのscopeチェーンには、グローバルオブジェクト(value)と、前に作成した変数オブジェクト(value 2)が追加されます.これがvalue 2がコンソールに現れる理由です.
エンクロージャ
EX
function outerFunc() {
const x = 1;
return function() {
console.log(x);
}
}
const newFunc = outerFunc();
newFunc(); // 1
通常、ほとんどのモジュールは上記のモードを採用しています.エンクロージャとはclosed,boundを指し,ライフサイクル終了後の外部関数の変数を参照する関数である.
つまり、終了したコンテキスト内の変数のパターンを使用します.
このモードこそ関数式のプログラミングを可能にした.
EX
function outerFunc(name, age) {
function innerFunc(job) {
console.log(name, age, job);
}
return innerFunc;
}
const newFunc = outerFunc("cskim132", 20);
console.log(newFunc("programmer")); // cskim132, 20, programmer
このようなものは通常コリンとも呼ばれます.EX
const outerFunc = (name, age) => job => console.log(name, age, job);
console.log(outerFuncs("cskim132", 20)("programmer"));
上記形式で実施することも可能です!の最後の部分
以上がコンテキストとモジュールです.
次の投稿では、関数プログラミングについて説明します.
ソース
Reference
この問題について(JavaScript.js#7実行コンテキストとモジュール), 我々は、より多くの情報をここで見つけました https://velog.io/@chkim132/자바스크립트.js-7-실행-컨텍스트와-클로저テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol