Heim > Web-Frontend > js-Tutorial > Wie kann eine variadische Curry-Summenfunktion in JavaScript erstellt werden, ohne den Babel-Trick zu verwenden?

Wie kann eine variadische Curry-Summenfunktion in JavaScript erstellt werden, ohne den Babel-Trick zu verwenden?

DDD
Freigeben: 2024-11-28 07:12:09
Original
371 Leute haben es durchsucht

How Can a Variadic Curried Sum Function in JavaScript Be Created Without Using the ' ' Babel Trick?

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
Nach dem Login kopieren

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));
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage