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
DDDoriginal
2024-11-28 07:12:09425parcourir

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

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));

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:
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