Javascript function Problem

Spontan würde ich so etwas hier versuchen:
Javascript:
function add( summand1, opt_summand2 ) {
  if ( opt_summand2 === undefined ) {
    return function( summand2 ) {
      return summand1 + summand2;
    };
  } else {
    return summand1 + opt_summand2;
  }
}
 
Spontan würde ich so etwas hier versuchen
Wenn die Lösung schon einfach hingeklatscht wird, präsentiere ich auch noch folgende Variante ;)
Javascript:
function add(x, y) {
  if (arguments.length == 1) {
    return add.bind(this, x);
  }
  else {
    return x + y;
  }
}

Zwei Vorteile
1. arguments.length statt undefined. Für Zahlen macht es keinen Sinn, aber vielleicht möchte man bei einer Stringkonkatenation logische Fehler vermeiden, nur weil das zweite Argument aus welchen Gründen auch immer "undefined" enthält.

2. Meine Variante wiederholt nicht die Addition. Bei der vorliegenden Funktion mag es vielleicht trivial sein, aber ein Code sollte immer DRY sein.
 
Wie schon gesagt: meins war ein spontaner Einfall. Das mit dem .bind() wusste ich auch noch, aber mir fiel eben spontan nicht ein, wie. Und ich wollte nicht nachschauen ;) Ergo ist das von ComFreak die schönere Variante.
 
Zurück