5. September 201411 j Das war ja nur ein Beispiel um auch nochmal zu untermauern, dass if(!y) funktioniert.Funktioniert es auch, wenn du add mit 2 Parametern aufrufst, und der zweite 0 ist?
5. September 201411 j Nur mal als Lesehilfe: Currying Was Du vorhast, sieht in der Umsetzung dann so aus: slice=Function.prototype.call.bind([].slice); function add(x){ var args=slice(arguments); if(args.length>1) return args[0]+args[1]; return function(y){ return x+y; } } [/php] Hier das Fiddle: Edit fiddle - JSFiddle Du musst in der ersten Funktion überprüfen, ob die Argumentliste mehr als ein Argument enthält. Wenn ja, dann nimm die ersten beiden und summiere sie; wenn nein, curry die zweite Funktion. Verbesserung: [php] if(args.length>1) return args.reduce(function(o,n){return o+n;}, 0); So kannst Du auch add mit beliebiger Parameteranzahl > 1 aufrufen. Das ist eine Aufgabe vom Betrieb. Deswegen kann ich den Sinn nicht ganz erschließen. Bin auch schon am tüffteln, wann man das gebrauchen könnte. Das sind Higher Order Functions - funktionales Javascript, was ein bisschen über den 08/15 jQuery.on("click", bla) hinausgeht Vielleicht haben die was vor mit Dir im Betrieb. Bearbeitet 5. September 201411 j von lilith2k3
5. September 201411 j Autor Ahhh das natürlich noch besser! Erstmal die argumente zu zählen. Macht sinn! Danke!
5. September 201411 j Autor Obwohl deine Lösung natürlich um einiges galanter ist. Mein Code müsste doch so auch funktionieren oder ? function add1(x,y){ if(!y){ return x; return function(y){ return x+y; }; } } return x+y; }
5. September 201411 j Ich bin zwar kein Javascriptprofi aber: Dein Code kann so nicht funktionieren. Mal formatiert: function add1(x,y) { if(!y) { return x; return function(y) { return x+y; }; } } return x+y; } [/PHP]
5. September 201411 j Autor Ups ups ups. Entschuldigung! Da ist natürlich ne klammer zuviel. Dennoch geht es nicht.
5. September 201411 j Wie sollen denn zwei direkt aufeinanderfolgende return-Anweisungen funktionieren? Die zweite wird nie erreicht.
5. September 201411 j Da ist nicht nur eine Klammer zuviel. Da stehen zB zwei return Statements direkt hintereinander, es gibt also unerreichbaren Code. Außerdem gibt es ein return Statement ausserhalb der Funktion.
5. September 201411 j Da stehen zB zwei return Statements direkt hintereinander Das ist Apple-Style. Das macht man heute so *muhahaha*
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.