Closer関数
10192 ワード
関数のコールバック関数として,内部関数と外部関数を区別する場合,内部関数をCloser関数と呼ぶ.
エンクロージャは、Scopeを使用してアクセス範囲を閉じ、カプセル化することを核心とする戻り関数によってScopeを区別します.
一般的な関数は、関数の実行が終了すると使用できなくなりますが、外部関数の実行が終了すると、モジュールは外部関数の変数をメモリに格納するので、繰り返し使用できます.
モジュールを使用して作成した関数.
パッケージを実装する際に使用する方法の1つ.
totalという名前の変数は、グローバル変数として宣言する必要があります.
calc関数は、totalの値が保持されているため、グローバル変数として宣言する必要はありません.
モジュールを使用すると、不要なグローバル変数の使用を減らすことができます.
スキャン機能を使用して価値を保護します.
エンクロージャは、Scopeを使用してアクセス範囲を閉じ、カプセル化することを核心とする戻り関数によってScopeを区別します.
メソッドの宣言
矢印関数
const add = a => b =>{
return a+b;
}
一般関数
const add = function(a){
//외부 함수
return function(b){
return a+b;
}
//내부 함수
}
この2つの関数は同じ役割を果たすモジュール関数です.外部関数は内部関数の変数bにアクセスできないが、内部関数は外部関数の変数aにアクセスできる.なぜCloser関数を使うのか
一般的な関数は、関数の実行が終了すると使用できなくなりますが、外部関数の実行が終了すると、モジュールは外部関数の変数をメモリに格納するので、繰り返し使用できます.
const add = function(a){
return function(b){
return a+b;
}
}
const sum = add(3);
console.log(sum(4));
// 7
console.log(sum(7));
// 10
これらの機能を使用すると、次のことができます.エンクロージャの使用
モジュールを使用して作成した関数.
HTMLタグの作成
const createTag = tag => content => `<${tag}>${content}</${tag}>`;
const createDiv = createTag('div');
createDiv('Closure');
// <div>Closure</div>
モジュールモード
パッケージを実装する際に使用する方法の1つ.
const calc = () => {
// private 영역, 함수 밖에선 total에 접근할 수 없다.
let total = 0;
return {
// public 영역
add: (a, b) => {
total += a + b;
},
sub: (a, b) => {
total += a - b;
},
getTotal: () => {
return total;
},
};
};
const Calc = calc();
Calc.add(5, 6);
console.log(Calc.getTotal()); // 11
Calc.sub(1, 3);
console.log(Calc.getTotal()); // 9
closer関数ではなくtotalという変数に値を格納しようとします.totalという名前の変数は、グローバル変数として宣言する必要があります.
calc関数は、totalの値が保持されているため、グローバル変数として宣言する必要はありません.
モジュールを使用すると、不要なグローバル変数の使用を減らすことができます.
スキャン機能を使用して価値を保護します.
Reference
この問題について(Closer関数), 我々は、より多くの情報をここで見つけました https://velog.io/@3000/클로저-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol