Maison > interface Web > js tutoriel > Comment fonctionnent plusieurs fonctions de flèches imbriquées en JavaScript ?

Comment fonctionnent plusieurs fonctions de flèches imbriquées en JavaScript ?

Patricia Arquette
Libérer: 2024-12-27 13:45:10
original
281 Les gens l'ont consulté

How Do Multiple Nested Arrow Functions Work in JavaScript?

Comprendre les fonctions de flèches multiples en JavaScript

En JavaScript, vous pouvez rencontrer du code comme celui-ci :

  e.preventDefault();
  /// Do something here
}
Copier après la connexion

Fonctions curry

Ce code démontre une fonction curry. Une fonction curry est une fonction qui renvoie une fonction, vous permettant d'appliquer partiellement des arguments.

Considérez l'exemple suivant (sans fonctions fléchées) :

const add = (x, y) => x + y
add(2, 3) //=> 5
Copier après la connexion

Sous forme curry :

const add = x => y => x + y
Copier après la connexion

Sans fonctions flèches :

const add = function (x) {
  return function (y) {
    return x + y
  }
}
Copier après la connexion

Focus sur le Retour Valeur

Les fonctions fléchées se comportent comme suit (en faisant attention à la valeur de retour) :

const f = someParam => returnValue
Copier après la connexion

Ainsi, dans notre fonction d'ajout, un nombre renvoie une fonction :

const add = x => (y => x + y)
Copier après la connexion

Cela signifie que l'ajout d'un nombre renvoie une fonction :

add(2) // returns (y => 2 + y)
Copier après la connexion

Appeler Curried Fonctions

Pour utiliser une fonction curry, appelez-la différemment :

add(2)(3)  // returns 5
Copier après la connexion

En effet, le premier appel de fonction renvoie une deuxième fonction. Seul le deuxième appel de fonction donne le résultat réel.

Application à votre code

Dans votre code :

handleChange = field => e => {
  e.preventDefault()
  /// Do something here
}
Copier après la connexion

Sans fonctions fléchées :

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
    // return ...
  };
};
Copier après la connexion

Puisque les fonctions fléchées lient cela lexicalement, cela ressemble plus à this :

handleChange = function(field) {
  return function(e) {
    e.preventDefault()
    // Do something here
    // return ...
  }.bind(this)
}.bind(this)
Copier après la connexion

Cela signifie que handleChange crée une fonction pour un champ spécifié. Il s'agit d'une technique React permettant de configurer des écouteurs d'événements pour chaque entrée sans duplication.

Encore plus de flèches

Plus de deux fonctions de flèche peuvent être séquencées :

const three = a => b => c =>
  a + b + c

const four = a => b => c => d =>
  a + b + c + d

three (1) (2) (3) // 6

four (1) (2) (3) (4) // 10
Copier après la connexion

Curry et Arity

Le curry peut surprendre toi. Ici, $ est défini comme une fonction curry avec deux paramètres, mais vous pouvez fournir n'importe quel nombre d'arguments :

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

const mult = x => y =>
  x * y
  
$ (1)           // 1
  (add (2))     // + 2 = 3
  (mult (6))    // * 6 = 18
  (console.log) // 18
  
$ (7)            // 7
  (add (1))      // + 1 = 8
  (mult (8))     // * 8 = 64
  (mult (2))     // * 2 = 128
  (mult (2))     // * 2 = 256
  (console.log)  // 256
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal