Maison >interface Web >js tutoriel >Comment le mécanisme de passage par valeur de JavaScript affecte-t-il les variables primitives et objets dans les fonctions ?

Comment le mécanisme de passage par valeur de JavaScript affecte-t-il les variables primitives et objets dans les fonctions ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 04:34:17216parcourir

How Does JavaScript's Pass-by-Value Mechanism Affect Primitive and Object Variables in Functions?

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

En JavaScript, les paramètres transmis aux fonctions sont toujours transmis par valeur. Cela signifie qu'une copie de la valeur d'origine est créée et que la valeur d'origine n'est affectée par aucune modification apportée à la copie. Cependant, lorsque la valeur est un objet (y compris des tableaux), la copie créée est une référence à l'objet d'origine.

Ce concept affecte le comportement des variables lorsqu'elles sont modifiées au sein des fonctions :

  • Valeurs primitives (par exemple, nombres, chaînes) : Lorsqu'une valeur primitive est passée en argument et modifiée dans la fonction, la valeur d'origine en dehors de la fonction reste inchangé.
  • Objets (par exemple, tableaux, objets) : Lorsqu'un objet est passé en argument et modifié dans la fonction, l'objet d'origine en dehors de la fonction est également modifié. En effet, même si la fonction reçoit une copie de l'objet d'origine, il s'agit en réalité d'une référence au même objet sous-jacent en mémoire. La modification des propriétés de l'objet référencé au sein de la fonction affecte donc l'objet d'origine en dehors de la fonction.

Par exemple :

function f(a, b, c) {
    a = 3; // Re-assigns a to a new primitive value
    b.push("foo"); // Adds a new property to b, modifying the referenced object
    c.first = false; // Modifies a property of the referenced object
}

Dans cet exemple, x, y, et z en dehors de la fonction auront les valeurs suivantes : x reste inchangé à 4 (valeur primitive), y a maintenant la propriété supplémentaire ["foo"] (propriété d'objet ajoutée) et z.first est défini sur false (objet propriété modifiée).

Pour créer une copie totalement indépendante d'un objet, il est nécessaire de copier explicitement toutes ses propriétés dans un nouvel objet. Cela peut être fait en utilisant la méthode Object.assign() ou en parcourant l'objet et en créant un nouvel objet avec de nouvelles propriétés basées sur les anciennes.

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