jsにおける閉パケットの理解二
908 ワード
クローズド・パッケージの3つの特徴:
1.関数ネスト関数2.関数の内部では、外部のパラメータと変数を参照できます.
3.パラメータと変数はゴミ回収メカニズムによって回収されない
閉パッケージとは、ある関数内に別の関数を作成し、別の関数を介してこの関数のローカル変数にアクセスすることです.
2つのカッコで呼び出したくない場合は、2つの方法があります.1つの変数がサブ関数から返される値を受け入れ、変数が存在する関数を実行する方法です.
なぜ2番目にundefinedが弾けるのか、1つの関数が値を返さなければundefinedになるからです.
内部関数(サブ関数)が実行されている場合は、returnを書く必要はありません.
内部関数(サブ関数)が実行されていない場合はreturnを書き、親関数aaの外で返されたサブ関数を呼び出します.
1.関数ネスト関数2.関数の内部では、外部のパラメータと変数を参照できます.
3.パラメータと変数はゴミ回収メカニズムによって回収されない
閉パッケージとは、ある関数内に別の関数を作成し、別の関数を介してこの関数のローカル変数にアクセスすることです.
2つのカッコで呼び出したくない場合は、2つの方法があります.1つの変数がサブ関数から返される値を受け入れ、変数が存在する関数を実行する方法です.
function aa(){
var b = 10;
return function cc(){
b++;
alert(b);
}
}
var dd = aa();
dd();//11, b++ , dd(); 12, dd=null;b , , 。
方式2:サブ関数は直接中から呼び出されますfunction aa(){
var b = 10;
(function cc(){
b++;
alert(b);
})();
}
alert(aa());
結果:11,undefinedなぜ2番目にundefinedが弾けるのか、1つの関数が値を返さなければundefinedになるからです.
内部関数(サブ関数)が実行されている場合は、returnを書く必要はありません.
function aa(){
var b = 10;
return (function cc(){
b++;
alert(b);
})();
}
aa();
このときreturnは中には意味がありません.サブ関数ccは値を返さないので、Javaがreturn voidを書かないようにします.内部関数(サブ関数)が実行されていない場合はreturnを書き、親関数aaの外で返されたサブ関数を呼び出します.