Maison >interface Web >js tutoriel >Comment transmettre la valeur (pas la référence) d'une variable JavaScript à une fonction ?

Comment transmettre la valeur (pas la référence) d'une variable JavaScript à une fonction ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 08:00:03724parcourir

How to Pass the Value (Not the Reference) of a JavaScript Variable to a Function?

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!

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