jsにおける閉パケットの理解二

908 ワード

クローズド・パッケージの3つの特徴:
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の外で返されたサブ関数を呼び出します.