Klotzkopp Geschrieben 5. September 2014 Geschrieben 5. September 2014 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? Zitieren
hanka Geschrieben 5. September 2014 Autor Geschrieben 5. September 2014 @Klotzkopp Ja das funktioniert. Kommt 2 raus. Bei z.B add(2,0) Zitieren
lilith2k3 Geschrieben 5. September 2014 Geschrieben 5. September 2014 (bearbeitet) 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 2014 von lilith2k3 Zitieren
hanka Geschrieben 5. September 2014 Autor Geschrieben 5. September 2014 Ahhh das natürlich noch besser! Erstmal die argumente zu zählen. Macht sinn! Danke! Zitieren
hanka Geschrieben 5. September 2014 Autor Geschrieben 5. September 2014 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; } Zitieren
sas86ks Geschrieben 5. September 2014 Geschrieben 5. September 2014 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] Zitieren
hanka Geschrieben 5. September 2014 Autor Geschrieben 5. September 2014 Ups ups ups. Entschuldigung! Da ist natürlich ne klammer zuviel. Dennoch geht es nicht. Zitieren
Klotzkopp Geschrieben 5. September 2014 Geschrieben 5. September 2014 Wie sollen denn zwei direkt aufeinanderfolgende return-Anweisungen funktionieren? Die zweite wird nie erreicht. Zitieren
sas86ks Geschrieben 5. September 2014 Geschrieben 5. September 2014 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. Zitieren
lilith2k3 Geschrieben 5. September 2014 Geschrieben 5. September 2014 Da stehen zB zwei return Statements direkt hintereinander Das ist Apple-Style. Das macht man heute so *muhahaha* Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.