Maison >interface Web >js tutoriel >Comment créer une fonction de somme au curry variadique en JavaScript sans utiliser l'astuce \'\' Babel ?
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!