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

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

Barbara Streisand
Libérer: 2024-12-02 10:51:11
original
323 Les gens l'ont consulté

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

Qu'est-ce que le 'var that = this;' Syntaxe Accomplish en JavaScript ?

En JavaScript, il est courant de rencontrer des blocs de code similaires aux suivants :

function Somefunction(){
   var that = this; 
   ... 
}
Copier après la connexion

Cette syntaxe attribue la valeur de this à une variable nommée that . Le but de cet idiome est de conserver une référence au contexte correct dans les fonctions imbriquées.

Pour illustrer la nécessité de cela, considérons l'exemple suivant :

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

    var that = this;

    colours.forEach(function() {
        // this is undefined
        // that is a reference to the element clicked on
    });
});
Copier après la connexion

Dans la fonction anonyme passé à forEach, le mot-clé this ne fait plus référence à l'élément cliqué car sa portée a changé. Attribuer ceci à cela nous permet de conserver la référence souhaitée dans la fonction imbriquée.

$('#element').click(function(){
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function(){
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    });
});
Copier après la connexion

En pratique, il est avantageux d'utiliser un alias plus descriptif pour améliorer la lisibilité du code. Par exemple, dans les exemples ci-dessus, clickedEl serait un choix plus approprié.

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