JSクローズド、自己実行関数小記


クローズドコンセプト:
  • クローズドとは、関数の「スタック」が関数の戻り後に解放されないことであり、関数内で内部関数を定義すると、クローズド
  • が生成されることである.
  • 内部関数が呼び出されると、クローズドが形成され、クローズドは他の関数の内部変数を読み取ることができる関数
  • である.
  • クローズドは関数の局所変数セットであるが、これらの局所変数は関数が戻った後も存在し続ける.
  • くりを一つあげる:
    戻りたい結果:
             :0
             :1
             :2
             :3
             :4
    1.初版js
    
    /**
     * main         ,            
     */
    function main(){
        var arr = new Array();
        for(var i=0;i<5;i++){
            arr.push(
                function(){
                    return console.log("         :"+i);
                }
            );
        }
        return arr;
    }
    
    var arrs = main();
    
    for(var i=0;i
    実際の戻り結果:
    :5
    :5
    :5
    :5
    :5
    2.自己実行関数概念から宣言された関数で、即座に呼び出された関数式を実行して、値をロックして、このときの状態を有効に保存することができます.
    クローズドパックの導入+自己実行関数の解決:
    /**
     * main           
     */
    function main(){
        var arr = new Array();
        for(var i=0;i<5;i++){
            arr.push(
                (function(_i){
                    return function(){console.log("         :"+_i);}
                })(i)
            );
        }
        return arr;
    }
    
    var arrs = main();
    
    for(var i=0;i
    参考:http://blog.csdn.net/xixiruyiruyi/article/details/54894404 http://www.cnblogs.com/best/p/6206268.html http://www.cnblogs.com/yanhewu/p/6009266.html http://blog.csdn.net/chelen_jak/articale/detail/50568911http://blog.csdn.net/github_34514750/articale/detail/52883401http://blog.csdn.net/xixiruyiruyi/article/details/54646143