JS でのクロージャー


クロージャーとは?
  • クロージャに入る前に、レキシカルスコープについて少し議論しましょう.

  • レキシカル スコープ:- レキシカル スコープは、関数スコープが親スコープから変数にアクセスする機能です.どの親? (最も近い親).

    function x() {
        var a = 1;
        function y() {
            var a=2;
            console.log(a) //2
          }
      y();
    }
    x();
    



    function x() {
        var a = 1;
        function y() {
            console.log(a) //1
          }
      y();
    }
    x();
    


    これで、レキシカル スコープの基本を理解できたと思います.

    では閉鎖とは?
  • 関数とそのレキシカル スコープがクロージャを形成していました.

  • その文だけに従って、コードを書きます.よりよく理解できるように.

    以下のコードは、少し変更を加えた上記のコードと同じです (logixal スコープ コード)

    function x() { //closure start
      var a = 1;
      function y() {
          console.log(a)
        }
      return y;
    }             // closure end
    
    let z = x();  // it will contain y function
    


    したがって、z() を呼び出すと、z には y function.so が含まれます.期待される出力は何ですか??

    function x() { //closure start
      var a = 1;
      function y() {
          console.log(a)
        }
      return y;
    }             // closure end
    
    let z = x();  // it will contain y function
    z() //1
    


    はい、出力は1です.zでは、関数だけが保存されるわけではありません.機能とともに.そのレキシカル スコープも明らかになります.

    では、閉鎖とは何ですか?
    関数とそのレキシカル スコープはクロージャを形成します. (文は終了しました).

    以上です、読んでくれてありがとう!
    乾杯!