Maison >interface Web >js tutoriel >Pourquoi utiliser `var that = this;` dans les fonctions JavaScript imbriquées ?

Pourquoi utiliser `var that = this;` dans les fonctions JavaScript imbriquées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-05 05:50:10293parcourir

Why Use `var that = this;` in Nested JavaScript Functions?

Accéder à ceci dans les fonctions imbriquées : démêler var that = this;

En JavaScript, comprendre la portée et la valeur de ceci est crucial. Considérez l'extrait de code suivant :

function Somefunction() {
  var that = this;
  ...
}

Pourquoi est-ce déclaré et attribué la valeur de this ?

Pour comprendre le but de cette technique, visualisons un scénario :

var colours = ['red', 'green', 'blue'];
document.getElementById('element').addEventListener('click', function() {
  // this points to the clicked element
  var that = this;

  colours.forEach(function() {
    // this is undefined within this inner function
    // that still refers to the clicked element
  });
});

ceci dans le rappel forEach fait référence à l'élément actuel du tableau, et non à l'élément sur lequel vous avez cliqué. Cependant, cela conserve une référence à l'élément cliqué.

Lorsque vous accédez à des fonctions imbriquées, la portée de celle-ci peut changer, ce qui rend difficile l'accès à la valeur d'origine. Alimenter ceci en cela garantit que la valeur d'origine est toujours accessible.

Notez que l'utiliser comme alias n'est pas toujours optimal. Il est préférable d'utiliser un alias plus descriptif qui indique clairement à quoi il fait référence, notamment dans les fonctions complexes.

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