Maison > interface Web > js tutoriel > Quelle est la différence entre le passage par valeur et le passage par référence en JavaScript ?

Quelle est la différence entre le passage par valeur et le passage par référence en JavaScript ?

Susan Sarandon
Libérer: 2024-12-22 13:49:10
original
886 Les gens l'ont consulté

What's the Difference Between Pass by Value and Pass by Reference in JavaScript?

Passage par référence et valeur en JavaScript

Lors du passage de données à des fonctions en JavaScript, il est crucial de comprendre la différence entre le passage par référence et passer par valeur. Cette distinction affecte la manière dont les données sont partagées et modifiées entre la fonction et l'appelant.

Pass by Value

Pour les types de données primitifs (chaînes, nombres, booléens), JavaScript passe toujours par valeur. Cela signifie qu'une copie de la valeur primitive est créée et transmise à la fonction. Toute modification apportée à la copie dans la fonction n'a aucun effet sur la variable d'origine en dehors de la fonction.

Passage par référence

Les objets (y compris les tableaux) sont passés par référence en JavaScript. Cela signifie que la fonction reçoit une référence à l'objet, pas une copie. Toute modification apportée aux propriétés de l'objet dans la fonction affectera l'objet d'origine en dehors de la fonction.

Exemples

Considérez la fonction suivante :

function f(a, b, c) {
  a = 3;
  b.push("foo");
  c.first = false;
}
Copier après la connexion

Lorsqu'il est appelé avec les arguments suivants :

var x = 4;
var y = ["eeny", "miny", "mo"];
var z = {first: true};
f(x, y, z);
Copier après la connexion

La valeur de x reste inchangée car elle est passée par valeur. Le tableau y d'origine est directement modifié via l'opération push(), donc son contenu change. De même, la première propriété de z est modifiée, affectant l'objet d'origine.

Copie d'objet indépendante

Pour créer une copie totalement indépendante d'un objet, il est nécessaire d'utiliser une méthode qui crée un nouvel objet avec les mêmes valeurs de propriété mais aucune référence à l'original. Une approche courante consiste à utiliser la technique JSON.parse(JSON.stringify()) :

var newObject = JSON.parse(JSON.stringify(originalObject));
Copier après la connexion

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