パッケージを簡単に理解する

6410 ワード

閉包とは何ですか
クローズドとは、他の関数の内部変数を読み取る機能です.それは密閉された容器で、set()またはmap()に似ていて、対象でもあります.key:value方式でデータを保存します.
閉包の条件を作る
1、形成関数のネスト2、内部関数は外部関数の局所変数を参照しています.
一つの簡単な閉鎖例
function fn1(){
  var count = 1; //  fn1     
  return funtion (){
    console.log(count); //           
  }
}
var a = fn1();
a();
クローズドのメリット
1、外部関数の局所変数のライフサイクルを延長しました.
function fn1(){
  count = 1;
  return function (){
    count ++;
    console.log(count);
  }
}
var a = fn1();
a();  //2    count        2,  fn1    ,count             
a();  //3
2、クローズドによるプライベート変数のカプセル化が可能です.
function fn1(n) {
  var x = n || 0;
  return {
    inc: function () {
      x += 1;
      return x;
    }
  }
}
var a = fn1();
a.inc();//1
a.inc();//2
a.inc();//3
var b = fn1(12);
b.inc();//13
b.inc();//14
b.inc();//15
外部コードは関数fn 1の変数xにアクセスできませんでした.
閉鎖的な欠点
実はクローズドの利点もクローズドの欠点であり、外部関数の局所変数のライフサイクルが延長されて、リリースすべきメモリが解放されなくなり、メモリが漏洩する恐れがある.