Maison >interface Web >js tutoriel >Comment transmettre la valeur (pas la référence) d'une variable JavaScript à une fonction ?
Comment transmettre la valeur (et non la référence) d'une variable JS à une fonction
Dans les langages dynamiques tels que JavaScript, les variables sont passé par référence par défaut. Cela signifie que toute modification apportée à la variable dans la fonction sera reflétée dans la variable d'origine en dehors de la fonction. Dans certaines situations, ce comportement n'est pas souhaitable et vous devrez peut-être transmettre la valeur d'une variable à une fonction.
Pour les navigateurs modernes, envisagez d'utiliser les mots-clés let ou const pour définir des variables de portée bloc :
<code class="js">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
Cette approche garantit que chaque itération de la boucle crée une nouvelle portée pour la variable i, évitant ainsi le problème où chaque auditeur utilise la valeur de results.length à la fin de la boucle.
Si vous travaillez avec des navigateurs plus anciens, créez une portée distincte pour chaque itération de la boucle en passant la variable comme paramètre de fonction :
<code class="js">for (var i = 0; i < results.length; i++) { (function (i) { marker = results[i]; google.maps.event.addListener(marker, 'click', function() { change_selection(i); }); })(i); }</code>
En utilisant une fonction anonyme et en l'appelant avec la variable comme premier argument, vous transmettez effectivement la valeur et créez une fermeture. Cela garantit que chaque écouteur possède sa propre copie de la variable i, faisant référence à sa valeur au moment de la création de l'écouteur.
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!