Maison > interface Web > js tutoriel > Comment les fonctions fléchées ES6 gèrent-elles le mot-clé « this » ?

Comment les fonctions fléchées ES6 gèrent-elles le mot-clé « this » ?

Linda Hamilton
Libérer: 2024-12-27 20:48:14
original
169 Les gens l'ont consulté

How Do ES6 Arrow Functions Handle the

Fonctions fléchées et liaison lexicale de "this" dans ES6

L'une des caractéristiques distinctives des fonctions fléchées dans ES6 est leur gestion unique du mot-clé "this". Contrairement aux fonctions régulières, qui lient dynamiquement « ceci » au contexte d'invocation de la fonction, les fonctions fléchées lient lexicalement « ceci » à la portée lexicale englobante.

Cela signifie que « ceci » dans une fonction fléchée fait toujours référence à l'objet. qui contient la définition de la fonction flèche. Par exemple :

var testFunction = () => {
  console.log(this);
};

testFunction();
Copier après la connexion

Dans ce code, "this" dans la fonction flèche ne fait pas référence à la fonction flèche grasse elle-même, comme vous l'avez spéculé. Au lieu de cela, il fait référence à l'objet qui contient la définition de la fonction fléchée. Puisque la fonction flèche est définie dans la portée globale, « ceci » aura un contexte global. Par conséquent, la sortie du code sera l'objet global.

La liaison lexicale est bénéfique dans les situations où la valeur de "this" est susceptible de changer pendant l'exécution de la fonction. Par exemple, considérons l'exemple suivant :

function Person() {
  this.age = 0;

  setInterval(() => {
    this.age++; // |this| properly refers to the person object
  }, 1000);
}

var p = new Person();
Copier après la connexion

Dans cet exemple, la fonction de flèche capture la valeur « this » de l'objet Person englobant. Cela garantit que l'opération d'incrémentation est toujours effectuée sur la bonne instance de personne, même si le rappel setTimeout est invoqué de manière asynchrone et que le contexte d'exécution a changé.

En résumé, les fonctions fléchées dans ES6 lient lexicalement "this" au portée lexicale englobante. Cela permet à "this" de faire référence au même objet quel que soit le contexte d'invocation de la fonction, ce qui facilite la gestion de "this" dans des scénarios de fonctions asynchrones ou imbriquées.

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