Maison >interface Web >js tutoriel >Comment les valeurs primitives et les valeurs de référence diffèrent-elles en JavaScript lorsqu'elles sont transmises à une fonction ?

Comment les valeurs primitives et les valeurs de référence diffèrent-elles en JavaScript lorsqu'elles sont transmises à une fonction ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 10:21:02478parcourir

How do primitive values and reference values differ in JavaScript when passed to a function?

Valeurs primitives et valeurs de référence en JavaScript

En JavaScript, les variables peuvent se voir attribuer soit des valeurs primitives, soit des valeurs de référence. Les valeurs primitives, telles que les booléens, les nombres et les chaînes, sont stockées directement dans l'emplacement mémoire de la variable.

Lorsque vous créez une valeur de référence, telle qu'un tableau ou un objet, vous ne stockez pas réellement l'objet ou le tableau. lui-même dans la variable. Au lieu de cela, vous stockez une référence à l’emplacement en mémoire où l’objet ou le tableau est stocké. Cela signifie que si vous modifiez l'objet ou le tableau, les modifications seront reflétées dans la variable, même si la variable elle-même n'a pas changé.

Exemple

Ce qui suit Le code JavaScript crée une valeur primitive et une valeur de référence :

var name = "John"; // Primitive value stored in the variable
var shoppingCart = []; // Reference value stored in the variable

Dans cet exemple, le nom de la variable contient la valeur primitive "John". La variable shoppingCart contient une référence à l'objet tableau stocké en mémoire.

Transmission de valeurs par valeur ou par référence

Lorsque vous transmettez une valeur primitive à une fonction, une copie de la valeur est transmise. Cela signifie que toute modification apportée à la valeur dans la fonction n'affectera pas la valeur stockée dans la variable.

Lorsque vous transmettez une valeur de référence à une fonction, la référence elle-même est transmise, pas une copie. Cela signifie que toute modification apportée à l'objet ou au tableau dans la fonction affectera également l'objet ou le tableau stocké dans la variable.

Exemple

Le code JavaScript suivant démontre passer des valeurs par valeur et par référence :

// Pass by value
var name = "John";

function changeName(name) {
  name = "Jane";  // Changes the local copy of the value
}

changeName(name);

console.log(name); // Outputs "John" because the original value is not changed

// Pass by reference
var shoppingCart = [];

function addProduct(shoppingCart) {
  shoppingCart.push("Apple");  // Changes the object stored in the reference
}

addProduct(shoppingCart);

console.log(shoppingCart); // Outputs ["Apple"] because the original object is updated

Dans le premier exemple, la fonction changeName reçoit la valeur primitive "John". Lorsque la fonction modifie la valeur en "Jane", la valeur d'origine stockée dans le nom de la variable n'est pas affectée.

Dans le deuxième exemple, la fonction addProduct reçoit la valeur de référence shoppingCart. Lorsque la fonction ajoute le produit "Apple" au tableau, l'objet d'origine stocké dans la variable shoppingCart est également mis à jour.

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