


Comprendre les fonctions de flèche JavaScript et leur liaison «cette»
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.
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é.

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.

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:

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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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.

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

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

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.

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