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
が無くなっただけだが。
見た目もすっきりして、高階関数っぽくなって、いい感じになった(?)。