JavaScriptのクロージャ再び
前回のソースは若干違和感があったので、修正。
function closure(a) {
var f = null;
if(a < 2) {
f = function(x, y) { return x + y; };
} else {
f = function(x, y) { return x * y; };
}
return f;
}
var c1 = closure(1);
var c2 = closure(2);
alert(c1(2, 1));
alert(c1(4, 3));
alert(c2(2, 1));
alert(c2(4, 3));つまり、
.f
が無くなっただけだが。
見た目もすっきりして、高階関数っぽくなって、いい感じになった(?)。