閉鎖は最初のスコープチェーン機能が何であるかを知っている必要があります理解するために
なぜならスコープチェーン機能の存在により、関数は、関数が関数の範囲外の変数を使用することができ、どんなに呼び出します。
関数が呼び出されると、それは、対応する実行環境とスコープチェーンが作成されます。そして、他のアクティブなオブジェクトの機能を初期化する値の引数と名前付きパラメータを使用します。スコープチェーン、アクティブオブジェクトの外部関数の現在の機能におけるこのアクティブオブジェクトは、第二の活性オブジェクト、第三の外部関数外部関数グローバルスコープチェーンで実行される連鎖の末端まで範囲として環境。
パッケージは閉鎖されています。
パッケージの目的を達成するためのスコープを達成するため、そうすることの利点は、プライベート変数、汚染を防止するためのグローバル変数を隠されています。
また、キャッシュ機能を実装することができます
1 ケース1:隠すプライベート変数 2 3。 機能パック(){ 4。 5。 VARの指標; 6。 7。 リターン 機能(){ 8。 9。 リターン・インデックス++ ; 10 11 ;} 12は 13である } 14 15 16 17。 VARの P = パック(); 18のIS 19 P(); 20は 21である 22は、 23である ケース2:キャッシュ 24 25 機能createFab(N-){ 26である VAR= _CACHE } {。 27 リターン 機能(N){ 28 VaRの結果= 0 。 29 であれば(_CACHE [N]){ 30 リターン_CACHE [N]。 31 } 32 であれば(N === 1 || N === 2 ){ 33 結果= 1 。 34 } 35 他{ 36 結果= FAB(N - 1)+ FAB(N - 2 )。 37 } 38 _CACHE [N] = 結果。 39 リターン結果; 40 } 41 } 42 43 44 VAR FAB = createFab()。 45 console.info(FAB(6 ))。 46 console.info(FAB(6))。