Table des matières
Les fonctions de flèche capturent «ce» lexicalement
Quand ne pas utiliser les fonctions flèches
Une note rapide sur les méthodes prototypes
Maison interface Web js tutoriel Comprendre les fonctions de flèche JavaScript et leur liaison «cette»

Comprendre les fonctions de flèche JavaScript et leur liaison «cette»

Jul 04, 2025 am 02:40 AM
Fonction de flèche

Il existe des différences clés entre les fonctions de flèche et les fonctions ordinaires dans cette liaison. 1. La fonction de flèche ne se lie pas à la sienne, mais hérite de la portée périphérique, c'est-à-dire la portée lexicale; 2. Celui d'une fonction ordinaire dépend de la méthode d'appel, qui fait souvent que cela pointe vers l'objet global dans le rappel; 3. L'utilisation des fonctions de flèche peut éviter de tels problèmes, ce qui convient au maintien de cette cohérence; 4. Les situations où les fonctions de flèche ne sont pas recommandées incluent les méthodes d'objet, les constructeurs et les scénarios qui nécessitent dynamiques comme le traitement des événements; 5. Lorsque vous utilisez les fonctions Arrow dans la méthode du prototype, cela ne pointera pas vers l'instance, mais la portée externe.

Comprendre les fonctions de flèche JavaScript et leur \ 'cette liaison

Les fonctions Arrow dans JavaScript peuvent sembler être juste un moyen plus court d'écrire des expressions de fonction, mais elles sont livrées avec une différence majeure qui déclenche beaucoup de développeurs: comment ils gèrent le this -clé.

Comprendre les fonctions de flèche JavaScript et leur liaison «cette»

Contrairement aux fonctions régulières, les fonctions Arrow n'ont pas this leur. Au lieu de cela, ils l'héritent du contexte environnant. Cela peut être super pratique - ou vraiment déroutant - en fonction de la façon et de l'endroit où vous les utilisez.

Comprendre les fonctions de flèche JavaScript et leur liaison «cette»

Comment «ce» fonctionne dans des fonctions régulières

Dans une fonction normale, la valeur de this dépend de la façon dont la fonction est appelée. C'est pourquoi vous voyez souvent la confusion lorsque vous utilisez this rappels ou méthodes intérieurs.

Par exemple:

Comprendre les fonctions de flèche JavaScript et leur liaison «cette»
 const user = {
  Nom: "Alex",
  saluer: function () {
    setTimeout (function () {
      console.log ("bonjour", this.name); 
    }, 100);
  }
};

user.greet (); // Bonjour, indéfini

À l'intérieur du setTimeout , this ne fait plus référence à l'objet user . En mode non strict, il pointe vers l'objet global ( window dans les navigateurs), ce qui signifie que this.name undefined .

Pour résoudre ce problème, les développeurs faisaient quelque chose comme:

 const Self = this;
setTimeout (function () {
  console.log ("bonjour", self.name); 
}, 100);

Ou lier this explicitement.


Les fonctions de flèche capturent «ce» lexicalement

Entrez maintenant la fonction flèche. Il ne se lie pas à this . Au lieu de cela, il utilise this valeur de la fonction parentale non-zone la plus proche. C'est ce qu'on appelle la portée lexicale.

Réécriture de l'exemple précédent avec une fonction flèche:

 const user = {
  Nom: "Alex",
  saluer: function () {
    setTimeout (() => {
      console.log ("bonjour", this.name); 
    }, 100);
  }
};

user.greet (); // Bonjour, Alex

C'est beaucoup plus propre. La fonction Arrow ne crée pas this , donc this.name fait correctement référence à l'objet user .

Ce comportement rend les fonctions Arrow idéales pour les rappels courts où vous souhaitez préserver l' this .


Quand ne pas utiliser les fonctions flèches

Même si les fonctions Arrow sont idéales pour this lexical, elles ne sont pas toujours le bon choix.

Voici quelques situations où vous devez les éviter:

  • Comme méthodes d'objet (sauf si vous souhaitez capturer l' this )
  • En tant que constructeurs - les fonctions de flèche ne peuvent pas être utilisées avec new
  • Lorsque vous avez besoin de this , comme dans les gestionnaires d'événements ou les méthodes DOM

Par exemple:

 const Button = document.QuerySelector ('bouton');

Button.AddeventListener ('click', () => {
  console.log (ceci); // fenêtre / global, pas le bouton
});

Si vous vous attendez à this se réfère à l'élément cliqué, utilisez plutôt une fonction régulière:

 Button.AdDeventListener ('click', function () {
  console.log (ceci); // l'élément bouton
});

Une note rapide sur les méthodes prototypes

Vous ne pouvez pas non plus utiliser les fonctions Arrow lors de la définition des méthodes de prototype si vous vous attendez à this se réfère à l'instance:

 fonction de fonction (nom) {
  this.name = name;
}

Personne.prototype.sayhi = () => {
  console.log ("Salut", this.name);
};

const p = new personne ("Jamie");
p.sayhi (); // salut, indéfini

Encore une fois, parce que la fonction de flèche n'a pas la this , elle fait référence à la portée extérieure, qui est probablement l'objet global.


Alors oui, les fonctions Arrow sont idéales pour garder this cohérent sans avoir à .bind() ou à utiliser self = this . Mais ils ne sont pas un remplacement sans rendez-vous partout - surtout lorsque vous voulez que this change en fonction de la façon dont la fonction est appelée.

Utilisez-les là où la lexicale this aide à simplifier votre code et à respecter les fonctions régulières lorsque dynamique this est nécessaire.

Fondamentalement, c'est tout.

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1535
276
Comment utiliser les fonctions fléchées PHP pour implémenter le currying des fonctions Comment utiliser les fonctions fléchées PHP pour implémenter le currying des fonctions Sep 13, 2023 am 11:12 AM

Comment utiliser les fonctions fléchées PHP pour implémenter le currying de fonctions Le currying (Currying) est un concept de programmation fonctionnelle, qui fait référence au processus de conversion d'une fonction multi-paramètres en une séquence de fonctions qui n'accepte qu'un seul paramètre. En PHP, nous pouvons utiliser des fonctions fléchées pour implémenter le currying des fonctions, rendant le code plus concis et flexible. La fonction dite flèche est une nouvelle syntaxe de fonction anonyme introduite dans PHP7.4. Sa caractéristique est qu'il peut capturer des variables externes et n'a qu'une seule expression comme corps de fonction.

Quelle est la différence entre les fonctions fléchées et les fonctions ordinaires dans es6 Quelle est la différence entre les fonctions fléchées et les fonctions ordinaires dans es6 Mar 08, 2022 pm 12:11 PM

Différences : 1. La définition de la fonction flèche est beaucoup plus simple, plus claire et plus rapide que la définition de la fonction ordinaire ; 2. La fonction flèche ne crée pas son propre ceci, mais la fonction ordinaire le fait ; utilisé comme constructeur, tandis que la fonction flèche ne peut pas être utilisée comme constructeur. Les fonctions peuvent être utilisées comme constructeurs. 4. Les fonctions flèches n'ont pas leurs propres arguments, mais les fonctions flèches en ont.

Comment utiliser les fonctions fléchées PHP pour améliorer les performances de votre code Comment utiliser les fonctions fléchées PHP pour améliorer les performances de votre code Sep 13, 2023 am 10:55 AM

Comment utiliser les fonctions fléchées de PHP pour améliorer les performances du code nécessite des exemples de code spécifiques. Dans la version PHP 7.4, les fonctions fléchées (ArrowFunctions) ont été introduites, qui sont une syntaxe de fonction anonyme plus concise qui peut nous aider à améliorer les performances et la lisibilité du code. Cet article expliquera comment utiliser les fonctions fléchées pour écrire du code PHP efficace et fournira des exemples de code spécifiques. Réduisez le coût de définition de fonction. La méthode traditionnelle de définition de fonction anonyme introduira certaines surcharges, notamment la définition du nom de la fonction et de la boucle de fermeture.

Expliquez les fonctions de flèche (fermetures courtes) introduites dans PHP 7.4. Expliquez les fonctions de flèche (fermetures courtes) introduites dans PHP 7.4. Apr 06, 2025 am 12:01 AM

La fonction de flèche a été introduite dans PHP7.4 et est une forme simplifiée de fermetures courtes. 1) Ils sont définis à l'aide de l'opérateur =>, omettant la fonction et utilisent des mots clés. 2) La fonction flèche capture automatiquement la variable de portée actuelle sans le mot clé Utiliser. 3) Ils sont souvent utilisés dans les fonctions de rappel et les calculs courts pour améliorer la simplicité et la lisibilité du code.

Comment utiliser les fonctions fléchées PHP pour simplifier les instructions conditionnelles Comment utiliser les fonctions fléchées PHP pour simplifier les instructions conditionnelles Sep 13, 2023 am 09:40 AM

Comment utiliser les fonctions fléchées PHP pour simplifier les instructions conditionnelles En programmation PHP, nous devons souvent utiliser des instructions conditionnelles (if-else) pour exécuter différents blocs de code basés sur différentes conditions. Cependant, l’utilisation de la syntaxe if-else traditionnelle peut rendre le code lourd et difficile à lire. Pour simplifier ce processus, PHP7.4 a introduit les fonctions fléchées (arrowfunctions). Les fonctions fléchées offrent un moyen plus concis et plus facile à lire d'écrire des instructions conditionnelles. Cet article présentera la fonction flèche

Qu'est-ce que cela indique dans la méthode de la flèche es6 ? Qu'est-ce que cela indique dans la méthode de la flèche es6 ? Nov 21, 2022 pm 05:55 PM

Dans ES6, l'objet this dans le corps de la fonction fléchée est l'objet pointé par la portée dans laquelle la fonction est définie. Le point de this dans la fonction arrow est le point de l'objet dans le contexte. Parfois, s'il n'y a pas d'objet de contexte, cela pointe vers la fenêtre ; même call, apply, bind et d'autres méthodes ne peuvent pas changer le point de this ; fonction flèche.

Fonctions fléchées PHP : comment gérer les appels imbriqués vers des fonctions d'ordre supérieur Fonctions fléchées PHP : comment gérer les appels imbriqués vers des fonctions d'ordre supérieur Sep 13, 2023 am 08:27 AM

Fonction flèche PHP : Comment gérer les appels imbriqués de fonctions d'ordre supérieur, des exemples de code spécifiques sont nécessaires Introduction : Dans la version 7.4 de PHP, le concept de fonctions fléchées (fonctions fléchées) a été introduit. être traités avec élégance. Les appels imbriqués vers des fonctions d’ordre supérieur. Cet article présentera l'utilisation de base des fonctions fléchées et démontrera comment gérer les appels imbriqués de fonctions d'ordre supérieur à travers des exemples de code spécifiques. 1. Qu'est-ce qu'une fonction fléchée ? La fonction flèche est une nouvelle fonctionnalité introduite dans la version PHP7.4.

Cet article vous apprendra les fonctions fléchées JS Cet article vous apprendra les fonctions fléchées JS Nov 10, 2022 pm 03:58 PM

Cet article peut vous permettre de tout savoir sur les fonctions fléchées JavaScript. Nous allons vous montrer comment utiliser la syntaxe des flèches d'ES6, ainsi que quelques erreurs courantes à surveiller lors de l'utilisation des fonctions fléchées dans votre code. Vous verrez de nombreux exemples de leur fonctionnement.

See all articles