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 ?
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!