JSクローズド、自己実行関数小記
2892 ワード
クローズドコンセプト:クローズドとは、関数の「スタック」が関数の戻り後に解放されないことであり、関数内で内部関数を定義すると、クローズド が生成されることである.内部関数が呼び出されると、クローズドが形成され、クローズドは他の関数の内部変数を読み取ることができる関数 である.クローズドは関数の局所変数セットであるが、これらの局所変数は関数が戻った後も存在し続ける. くりを一つあげる:
戻りたい結果:
クローズドパックの導入+自己実行関数の解決:
戻りたい結果:
: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