閉鎖 - カリー - パーシャルリフレッシュ-IIFE

1)ネストされた関数、それによって、外部機能のプロセスのローカル変数を更新し、内部機能、外部コール内部関数を返すことによって、外部の機能にアクセスする関数内のローカル変数。

2)範囲のコードが実行されるのうち、まだ完了した後に存在します

3)メモリリークが発生することがあり、オブジェクトの参照カウントが0、JS自動復旧である場合、循環参照は、A、B、B C ....リークメモリ参照として引用場合閉鎖、外部参照内部変数、。

関数アウター(){
  VARの NUM = 1 。
  戻り 関数  (){
    戻り NUM + = 1 ; 
  } 
} 
VAR G = アウタ()。
console.log(G())// 2 
はconsole.log(G())// 3 
はconsole.log(G())// 4

3)アプリケーション

、APIパッケージ

VAR OBJ = {}; 関数(エクスポート){
    VAR NUM = 1; // 私有变量 
   export.add = 関数(){ 
       戻り NUM + = 1 ; 
   }; 
   エクスポート解除 = 関数(){}; 
})(この .OBJ = {})

即時実行機能発現と閉鎖サイクル/非同期コールバックで使用されるB、生命維持

機能arrSet(){
  VAR ARR5 = []
  のためのVAR I = 0; I <3; I ++ ){
    VAR OBJ = { 
      ID:I、
      追加:機能(NUM){
        戻り 関数(){
          戻りNUM 
        } 
      }(I )
    } 
  arr5.push(OBJ)
  } 
  戻りARR5。
} 
VAR ARR = arrSet()。
console.log(ARR [ 0] .add())// iが0 = 
はconsole.log(ARR [1] .add())//をiが1 =
console.log(ARR [2] .add())// i = 2

カリー化関数:以前に渡された特定のパラメータの関数、内部関数に格納されます。

関数createNum(開始){
  リターン 機能(エンド){
    戻り開始+ = 終了。
  } 
} 
VAR T = createNum(5 )。
console.log(T( 3))。  // 8 
にconsole.log(T(2))。// 10
アプリケーション:
UIパーシャルリフレッシュ
機能アップデート(インデックス){
  リターン 機能(テキスト){ 
    $( "のdiv#" + インデックス).htmlを(テキスト); 
  } 
} 

Ajaxリクエストの
機能の更新(コールバック){ 
  $アヤックス({ 
    成功:機能(データ){ 
      コールバック(データ); 
    } 
  })
}

おすすめ

転載: www.cnblogs.com/yuyedaocao/p/12060297.html