Maison >interface Web >js tutoriel >Comment le curry fonctionne-t-il avec plusieurs fonctions fléchées en JavaScript ?

Comment le curry fonctionne-t-il avec plusieurs fonctions fléchées en JavaScript ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-21 06:48:12293parcourir

How Does Currying Work with Multiple Arrow Functions in JavaScript?

Currying avec plusieurs fonctions de flèches en JavaScript

Vous pouvez rencontrer du code comme celui-ci dans les applications React :

handleChange = field => e => {
  e.preventDefault();
  /// Do something here
}

Cette syntaxe déroutante représente ce qu'on appelle un curry fonction.

Qu'est-ce que le Currying ?

Le Currying est une technique qui permet de définir une fonction en plusieurs parties. Par exemple :

const add = x => y => x + y

C'est équivalent à la fonction traditionnelle :

const add = function (x) {
  return function (y) {
    return x + y
  }
}

Se concentrer sur la valeur de retour

Dans les fonctions fléchées, la valeur de retour est représentée par :

const f = someParam => returnValue

Par conséquent, notre fonction add renvoie un function :

const add = x => (y => x + y)

Appel de la fonction :

add(2)(3)  // returns 5

Cela se produit car l'appel de la fonction externe renvoie la fonction interne.

Comprendre le code handleChange

Appliquer ceci au handleChange code :

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
  };
};

Étant donné que les fonctions fléchées préservent le contexte, cela ressemble effectivement à :

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
  }.bind(this)
}.bind(this)

Ce code crée une fonction pour un champ spécifique. Dans React, il est utilisé pour configurer des écouteurs pour divers champs de saisie sans dupliquer le code.

Fonctions fléchées multiples

Plusieurs fonctions fléchées peuvent être séquencées, permettant des fonctionnalités surprenantes comme ceci :

const $ = x => k =>
  $ (k(x))

Cette fonction curry, appelée $ (comme un jeu de mots sur la syntaxe Lisp), semble accepter un nombre arbitraire de arguments, faisant abstraction du concept d'arité.

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