クローズドとは何ですか?
1420 ワード
クローズド(Cloure)
ローカル変数が解放されないコードブロックを保持することができます.
クローズドの概念は抽象的で、みんなが多かれ少なかれこの特性を知っていると信じています.
じゃ、閉パックはいったい私たちにどんなメリットをもたらすのですか?
まず、どうやってクローズドを作成するかを見てみます.
言い換えれば、クローズドとは、いくつかの関数がプライベートである「持続変数」を作成することである.
したがって、この例から、私たちはまとめられます.内、外の二層関数 が存在します.内層関数の外層関数の局所変数を参照した .
クローズドの用途
クローズドの主な用途は、キャッシュや計算の中間量などに使用することができる、いくつかのスコープの恒久化変数を定義することです.
閉鎖の弊害
恒久化変数は正常には解放されず、メモリ空間を占有し続け、メモリの無駄をもたらしやすいので、通常はいくつかの追加的な手動のクリーンアップメカニズムが必要です.
選択:http://taobaofed.org/blog/2017/03/16/javascript-functional-programing/
ローカル変数が解放されないコードブロックを保持することができます.
クローズドの概念は抽象的で、みんなが多かれ少なかれこの特性を知っていると信じています.
じゃ、閉パックはいったい私たちにどんなメリットをもたらすのですか?
まず、どうやってクローズドを作成するかを見てみます.
//
function makeCounter() {
let k = 0;
return function() {
return ++k;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
makeCounter
のこの関数のコードブロックは、返却された関数において、局所変数k
を参照した結果、局所変数が関数実行終了後にシステムによって回収されなくなり、閉ループが発生した.このクローズド・パケットの役割は、「局所変数を保持し、内部関数を呼び出した時に、この変数を繰り返し使用することができます.大域変数とは異なり、この変数は関数内部でのみ参照されます.言い換えれば、クローズドとは、いくつかの関数がプライベートである「持続変数」を作成することである.
したがって、この例から、私たちはまとめられます.
クローズドの用途
クローズドの主な用途は、キャッシュや計算の中間量などに使用することができる、いくつかのスコープの恒久化変数を定義することです.
//
//
const cache = (function() {
const store = {};
return {
get(key) {
return store[key];
},
set(key, val) {
store[key] = val;
}
}
}());
cache.set('a', 1);
cache.get('a'); // 1
上記の例は簡単なキャッシュツールの実装であり、匿名関数は、store
オブジェクトが参照されてもよく、回収されないように、クローズドパケットを作成している.閉鎖の弊害
恒久化変数は正常には解放されず、メモリ空間を占有し続け、メモリの無駄をもたらしやすいので、通常はいくつかの追加的な手動のクリーンアップメカニズムが必要です.
選択:http://taobaofed.org/blog/2017/03/16/javascript-functional-programing/