Maison > interface Web > js tutoriel > Comment créer une fonction de somme au curry variadique en JavaScript sans utiliser l'astuce \'\' Babel ?

Comment créer une fonction de somme au curry variadique en JavaScript sans utiliser l'astuce \'\' Babel ?

DDD
Libérer: 2024-11-28 07:12:09
original
451 Les gens l'ont consulté

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

Somme au curry variadique sans l'astuce Plus Babel

JavaScript peut-il créer une fonction de somme qui se comporte comme suit ?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
Copier après la connexion

On croit à tort que cela est impossible. Cependant, cela est réalisable en exploitant l'opérateur en combinaison avec sum.

Solution :

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));
Copier après la connexion

La clé réside dans la définition des méthodes valueOf et toString dans le fonction curry. Ces méthodes dictent le comportement de la fonction lorsqu'elle est contrainte à une valeur primitive, telle qu'un nombre. En renvoyant n dans ces méthodes, nous nous assurons que l'état interne de la fonction curry (la somme actuelle) est préservé.

Cette technique permet de créer une fonction de somme curry variadique sans recourir à l'astuce de Babel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal