Maison > interface Web > js tutoriel > Passage par valeur et passage par référence en JavaScript : comment affectent-ils les arguments de fonction ?

Passage par valeur et passage par référence en JavaScript : comment affectent-ils les arguments de fonction ?

Barbara Streisand
Libérer: 2024-12-22 15:21:13
original
918 Les gens l'ont consulté

Pass-by-Value vs. Pass-by-Reference in JavaScript: How Do They Affect Function Arguments?

Comprendre le passage par valeur et le passage par référence en JavaScript

Lorsque vous transmettez des valeurs ou des objets à des fonctions en JavaScript, il est crucial pour comprendre le concept de passage par référence et de passage par valeur. En bref, les primitives (telles que les nombres, les chaînes, les booléens) sont transmises par valeur, ce qui signifie que les modifications apportées au sein de la fonction n'affectent pas la valeur d'origine en dehors de la fonction.

Cependant, les objets sont transmis par "copie de une référence." Cela signifie que lorsqu'un objet est passé à une fonction, une nouvelle référence est créée à l'objet d'origine. Toute modification apportée au contenu de l'objet dans la fonction affectera l'objet d'origine.

Étude de cas : exemple de fonction rectangle

Dans l'exemple fourni, nous avons une fonction rectangle qui prend un objet de configuration et un objet my facultatif. En interne, il définit un objet my local s'il n'existe pas dans les arguments. Cet objet my stocke la longueur et la largeur du rectangle.

La fonction zone dans la fonction rectangle calcule l'aire du rectangle en utilisant la longueur et la largeur stockées dans l'objet my.

Quand nous invoquons la fonction rectangle et attribuons l'objet renvoyé à myRec, nous créons une copie de la référence à l'objet my. Toute modification apportée au contenu de my (par exemple, mise à jour de my.l et my.w) dans la fonction rectangle sera reflétée à la fois dans my et myRec car elles font référence au même objet sous-jacent.

Cependant, si nous essayons d'écraser la référence à my dans la fonction rectangle, cela n'affectera pas la copie de la référence détenue par l'appelant (myRec). En effet, les références sont transmises par valeur, ce qui signifie que l'attribution d'un nouvel objet à my dans la fonction ne modifie que la référence locale, pas la référence détenue par l'appelant.

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!

source:php.cn
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