Maison >interface Web >js tutoriel >Passage par référence ou passage par valeur en JavaScript : comment les objets et les primitives se comportent-ils dans les appels de fonction ?

Passage par référence ou passage par valeur en JavaScript : comment les objets et les primitives se comportent-ils dans les appels de fonction ?

DDD
DDDoriginal
2024-12-20 21:44:09176parcourir

Pass-by-Reference vs. Pass-by-Value in JavaScript: How Do Objects and Primitives Behave in Function Calls?

Référence de passage JavaScript par rapport à la valeur de passage

JavaScript utilise à la fois des mécanismes de passage par valeur et de passage par référence . Les primitives, telles que les nombres et les chaînes, sont transmises par valeur, ce qui signifie qu'une copie de la primitive est créée dans la fonction appelée. En revanche, les objets non primitifs, principalement les objets, sont passés par référence.

Dans le cas des objets, une référence à l'objet est passée plutôt qu'une copie. Cela signifie que la modification de la variable de référence dans la fonction appelée n'affectera pas la référence dans l'appelant, comme le démontre l'exemple fourni :

var a = { key: 'value' };
replace(a); // a still holds its original value
update(a); // a's contents change

Confusion avec la fonction rectangle

L'exemple de la question inclut un rectangle de fonction imbriqué avec le paramètre my. Ce paramètre est initialement indéfini, mais est défini dans la fonction. La raison de cette configuration est de fournir un moyen de partager des données entre la fonction rectangle et sa fonction de zone interne.

Bien que le paramètre my ne soit pas initialement défini dans la fonction rectangle, il s'agit d'une référence d'objet passée par référence. . En tant que tel, lorsqu'il est affecté dans la fonction rectangle, il crée une nouvelle référence à un objet qui peut être modifié à la fois dans les fonctions rectangle et zone, même si la fonction zone ne reçoit pas directement le paramètre my.

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