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
Barbara Streisandoriginal
2024-12-02 10:51:11273parcourir

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

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
    });
});

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
    });
});

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