Maison >interface Web >js tutoriel >Comment la liaison lexicale affecte-t-elle le mot-clé « this » dans les fonctions fléchées ES6 ?

Comment la liaison lexicale affecte-t-elle le mot-clé « this » dans les fonctions fléchées ES6 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 15:27:12431parcourir

How Does Lexical Binding Affect the

Liaison lexicale de « ceci » dans les fonctions fléchées ES6

Les fonctions fléchées dans ES6 sont réputées pour leur comportement de liaison lexicale unique de « ceci ». " Contrairement à d'autres fonctions JavaScript où « this » est lié dynamiquement, les fonctions fléchées conservent une portée lexicale, attribuant « this » à la même valeur que son contexte englobant.

Pour illustrer ce concept, considérons le code suivant :

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

Contrairement au comportement JavaScript traditionnel où « ceci » ferait référence à l'objet global (fenêtre), les fonctions fléchées capturent la valeur « ceci » du contexte englobant. Dans cet exemple, "this" ferait référence à la portée globale (fenêtre) puisque testFunction est défini en dehors de tout objet.

De plus, la liaison lexicale garantit que "this" reste cohérent tout au long de la durée de vie de la fonction flèche. Prenons l'exemple suivant :

function Person(){
  this.age = 0;

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

var p = new Person();

Ici, la fonction flèche capture la valeur "this" de l'objet Person, lui permettant d'accéder et de modifier ses propriétés (dans ce cas, en incrémentant la propriété age). Ce comportement garantit que « ceci » fait toujours référence au contexte correct, quelle que soit la façon dont la fonction fléchée est appelée ou le contexte d'exécution change.

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