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?
hanka Geschrieben 5. September 2014 Autor Geschrieben 5. September 2014 @Klotzkopp Ja das funktioniert. Kommt 2 raus. Bei z.B add(2,0)
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
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!
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; }
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]
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.
Klotzkopp Geschrieben 5. September 2014 Geschrieben 5. September 2014 Wie sollen denn zwei direkt aufeinanderfolgende return-Anweisungen funktionieren? Die zweite wird nie erreicht.
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.
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*
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden