クロージャ(その2)

javascript

クロージャ(その2)

クロージャについて、別なサンプルを書いて動作させてみます。

前回のクロージャは、関数内にローカル変数を宣言し、そのローカル変数をクロージャを動作させるタイミングでアクセスしていました。
次に、ローカル変数を宣言せず、関数の引数として指定するサンプルを動かしてみます。

function test3(n)
{
	return {
		//ゲッター
		get f1() {
			return n++;
		},
		//セッター
		set f1(m) {
			n = m;
		}
	};
}

//関数test3を変数へ代入し、オブジェクトを生成する
var obj3 = test3(50); //このタイミングでゲッターメソッドを実行する

console.log(obj3.f1);
console.log(obj3.f1);
console.log(obj3.f1);

obj3.f1 = 100; //セッターメソッドを実行する

console.log(obj3.f1);
console.log(obj3.f1);
console.log(obj3.f1);

出力結果は次のようになります。

50
51
52
100
101
102

上記のように、関数内にローカル変数を持たない場合でも、
引数を渡してその値をコントロール(セッター&ゲッター)することにより、
内部の値を保持するような形で処理することができています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です