ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript学習_JavaScriptスキルのクロージャ分析
ECMAScript では、関数宣言で宣言され、関数の外で見られるすべての変数は、関数内の 最終値 にアクセスできます。
クロージャ関数は変数の最終値にのみアクセスできます!!!
例:
function fnTest(arr) {
for (var i=0;i < arr.length;i ) {
arr[i]=function () {alert(i " | " arr[i]); };
}
}
var arr = [0,1,2,3];
fnTest(arr);
for (var i=0; i < arr.length;i ) {
arr[i](); //常に 4 が出力され、未定義が存在します関数の終了後、i の値は 4 になるため、アクセスされる値は次のようになります。 4 つだけ
//結果は 4 回連続して表示されます "4|unknown"
}
クロージャ内のクロージャの外側にある変数値にアクセスできるだけでなく、その値を設定することもできます
例:
function fnTest() {
var a=" June";
return {
set:function (param) {a = param},
get:function () {return a}
};
}
var obj = fnTest();
alert(obj.get());//6 月のポップアップ
obj.set(586);
alert(obj.get());//ポップアップ 586