Variadische Curry-Summe ohne den Plus-Babel-Trick
Kann JavaScript eine Summenfunktion erstellen, die sich wie folgt verhält?
sum(1)(2) = 3 sum(1)(2)(3) = 6 sum(1)(2)(3)(4) = 10
Man glaubt fälschlicherweise, dass dies unmöglich ist. Dies ist jedoch möglich, indem der Operator in Kombination mit sum genutzt wird.
Lösung:
function sum(n) { var v = function(x) { return sum(n + x); }; v.valueOf = v.toString = function() { return n; }; return v; } console.log(+sum(1)(2)(3)(4));
Der Schlüssel liegt in der Definition der Methoden valueOf und toString innerhalb der Curry-Funktion. Diese Methoden bestimmen, wie sich die Funktion verhält, wenn sie in einen primitiven Wert, beispielsweise eine Zahl, umgewandelt wird. Durch die Rückgabe von n innerhalb dieser Methoden stellen wir sicher, dass der interne Zustand der Curry-Funktion (die aktuelle Summe) erhalten bleibt.
Diese Technik ermöglicht die Erstellung einer variablen Curry-Summenfunktion, ohne sich auf den Babel-Trick verlassen zu müssen.
Das obige ist der detaillierte Inhalt vonWie kann eine variadische Curry-Summenfunktion in JavaScript erstellt werden, ohne den Babel-Trick zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!