2008年10月14日火曜日

functionをreturnするfunction、それがクロージャ

ちょっとブレイクスルーがあったのでメモ。
JavaScriptでのクロージャの話。

Greeting = function(aisatsu){
 return function(name){
  alert (aisatsu + "、" + name + "さん!");
  return;
 }
}

morning = new Greeting("おはよう");
morning("佐藤");


クロージャは関数を返す関数なのだ。
上の例だとGreetingに"おはよう"を渡す事で、
中のfunctionは
function(name){
 alert ("おはよう" + "、" + name + "さん!");
 return;
};

になって、それをmorningに代入してるというわけか。
ようやく理解できた。なるほど!

1 件のコメント:

匿名 さんのコメント...

なるほどー。勉強になりました。