JavaScript関数は閉じます.

843 ワード

1、なぜクローズドがあるのですか?
作用領域の原因で関数外訪問関数で定義できない変数ですが、時にはまたこのような需要があります.この時はクローズドを使う必要があります.
2、クローズドとは何ですか
関数Aの内部でもう一つのサブ関数aを定義して、親関数の変数v 1をサブ関数aが制御して、父関数Aでこのサブ関数aを呼び出し側に返します.これをクローズドといいます.
3、クローズドの用途
クローズドはコーディングの観点から言えば、主に二つの用途があります.
  • は、親レベルのスコープ関数全体の内部の変数を読み取ることができる.
  • は、これらの変数の値を常にメモリに保持させる.
  • function fn() {
        var n = 100;
    
        function getF() {
            return n;
        }
    
        function setF(newN) {
             return n = newN;
        }
        return {
            getF:getF,
            setF:setF
        }
    }
    var a = new fn()
    a.getF()     //100
    a.setF(200)  //200
    4、注意事項
  • は、クローズドされると関数の変数がメモリに保存され、メモリの消費が大きいので、クローズドを乱用することはできません.そうでないと、ウェブページの性能問題が発生し、IEでメモリのリークを引き起こす可能性があります.
  • 解決方法は、関数を終了する前に、使用しないローカル変数をすべて削除することである.現在の変数の値を「null」に設定すると、変数の参照が解除され、ゴミ回収が開始されると、これらの値が「null」の変数が自動的に回収されます.