Maison > interface Web > js tutoriel > Passage JavaScript par valeur ou référence : quelle est la véritable histoire ?

Passage JavaScript par valeur ou référence : quelle est la véritable histoire ?

Mary-Kate Olsen
Libérer: 2024-12-28 17:27:55
original
974 Les gens l'ont consulté

JavaScript Pass by Value or Reference: What's the Real Story?

JavaScript : passage par référence ou passage par valeur démystifié

En JavaScript, le sujet du passage par référence par rapport au passage par valeur soulève souvent questions. Comprendre ce concept est crucial pour une programmation efficace.

Passage par valeur ou passage par référence

Contrairement à la croyance populaire, JavaScript transmet toujours les arguments aux fonctions par valeur. Cependant, la valeur transmise peut être un type de données primitif (nombre, chaîne, booléen, nul, non défini) ou une référence à un objet (Array, Object).

Primitives vs. Objets

  • Primitives : Transmises par leur valeur réelle. Les modifications apportées à la valeur transmise n'affectent pas la variable en dehors de la fonction.
  • Objets (Tableaux, Objets) : Passé par référence. Les modifications apportées aux propriétés de l'objet affectent la variable en dehors de la fonction. Cependant, la réaffectation de l'objet entier à une nouvelle référence n'affectera pas la variable externe.

Exemples :

Considérez l'extrait de code :

function f(a, b) {
  a = 3;
  b[0] = "foo";
}

var x = 4;
var y = ["eeny", "miny", "mo"];
f(x, y);
Copier après la connexion
  • x reste inchangé car c'est une primitive passée par valeur et réaffecté.
  • y est modifié car c'est un objet passé par référence et sa propriété a été modifiée.

Clonage d'objet indépendant

Pour créer une copie totalement indépendante d'un objet sans aucune référence, la meilleure pratique consiste à utiliser la méthode Object.assign() ou l'opérateur spread (...).

Exemple :

const original = { foo: "bar" };
const clone = { ...original };
Copier après la connexion

Dans cet exemple, le clone est une copie indépendante de l'original. Toute modification apportée au clone n'affectera pas l'original.

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