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