クロージャ

javascriptにはクロージャというのがある。
関数を返すような関数、がクロージャである。
こんな感じになる。


function mk_closure(val1,val2){
var val3 = val1 + val2;
return function(i){ val3+= i; return val3 }
}
見慣れてないとすごく気持ちの悪いこの関数。
引数で受け取ったval1 と val2を足してval3というのを作っているのはわかるが、
return しているのはfunction(i){ val3+= i; return val3 }という謎の何か。
このfunction(i){ val3+= i; return val3 }というのが、名前なし関数という。
普通function func(i){ val3+= i; return val3 }という感じで名前(func)をつけるところを省略している。だから名前なしの関数。
(別に名前アリな関数を返してもよいが)