En JavaScript, toutes les variables sont passées par valeur, ce qui signifie qu'une copie de la valeur d'origine est créé et transmis à la fonction. Cependant, lorsque la valeur est un objet, tel qu'un tableau ou un objet littéral, la copie est une référence à l'objet d'origine.
function f(a, b, c) { a = 3; // Reassignment changes the local variable only. b.push("foo"); // Property change affects the original object. c.first = false; // Property change affects the original object. } const x = 4; let y = ["eeny", "miny", "mo"]; let z = { first: true }; f(x, y, z); console.log(x, y, z.first); // Output: 4, ["eeny", "miny", "mo", "foo"], false
Dans l'exemple ci-dessus, les modifications apportées aux objets b et c sont reflétées dans les objets d'origine, tandis que la réaffectation de a n'a aucun effet.
Exemples détaillés :
function f() { const a = ["1", "2", { foo: "bar" }]; const b = a[1]; // Copy the reference to the original array element a[1] = "4"; // Change the value in the original array console.log(b); // Output: "2" (Original value of the copied reference) }
Dans le premier exemple, même si a a été modifié, b est toujours valable la valeur d'origine car il s'agit d'une copie de la référence.
function f() { const a = [{ yellow: "blue" }, { red: "cyan" }, { green: "magenta" }]; const b = a[1]; // Copy the reference to the original object a[1].red = "tan"; // Change the property in the original object console.log(b.red); // Output: "tan" (Property change is reflected in both variables) b.red = "black"; // Change the property through the reference console.log(a[1].red); // Output: "black" (Property change is reflected in both variables) }
Dans le deuxième exemple, le changement en a[1].red affecte à la fois a et b car ils partagent la même référence d'objet.
Pour créer une copie entièrement indépendante d'un objet, vous pouvez utiliser JSON.parse() et JSON.stringify( ) méthodes pour désérialiser et sérialiser l'objet respectivement. Par exemple :
const originalObject = { foo: "bar" }; const independentCopy = JSON.parse(JSON.stringify(originalObject));
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!