関数の役割ドメインチェーン、ローカル変数、グローバル変数、閉パッケージなどの概念を理解する


関数のスコープ
役割ドメインは変数と関数のアクセス可能な範囲であり、変数と関数の可視性とライフサイクルを制御し、JavaScriptでは変数の役割ドメインにグローバル役割ドメインとローカル役割ドメインがある.
グローバル変数
関数内で宣言したり宣言したりしていないときにvarを持たないのはグローバル変数で、グローバル役割ドメインを持っていて、windowオブジェクトのすべての属性はグローバル役割ドメインを持っています.コードはどこでもアクセスできますが、
ローカル変数
関数内部で宣言されvarで修飾された変数は局所変数であり,関数内でのみ使用でき,関数のパラメータはvarを使用していないが局所変数である.
アクティブドメインチェーン
コードが1つの環境で実行されると、変数オブジェクトの役割ドメインチェーンが作成され、実行環境の変数と関数への秩序あるアクセスが保証されます.役割ドメインの最初のオブジェクトは常に現在の実行コードが存在する環境の変数オブジェクトであり、次の実行環境は環境を含み、最後の実行環境はグローバル実行環境である.
クローズドパッケージ
  • 概念:他の役割ドメイン変数にアクセスする権限を持つ関数
  • の役割:1、関数内部の変数2を読み取ることができ、これらの変数の値を常にメモリに保持する
  • .
  • 理解:ローカル変数はグローバル環境ではアクセスできないため、ローカル変数にアクセスするには、関数の内部で関数を定義します.これが閉パケット
  • です.
        function f1(){
         
        var n=999;
        function f2(){
         
          alert(n); // 999  f2()      
        }
      }

    クローズドパッケージの使用上の注意点
    1)閉パケットは関数中の変数をメモリに保存し、メモリ消費量が大きいため、閉パケットを乱用してはいけない.そうしないと、ウェブページの性能に問題があり、IEでメモリが漏れる可能性がある.解決策:関数を終了する前に、使用しないローカル変数をすべて削除します.2)閉パッケージは親関数の外部で、親関数の内部変数の値を変更します.したがって、親関数をオブジェクト(object)として使用し、閉パッケージを共通のメソッド(Public Method)とし、内部変数をプライベート属性(private value)として使用する場合は、親関数の内部変数の値を勝手に変更しないように注意してください.