Maison > interface Web > js tutoriel > Pourquoi `console.log()` affiche-t-il les modifications immédiates du tableau en JavaScript ?

Pourquoi `console.log()` affiche-t-il les modifications immédiates du tableau en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-13 01:15:10
original
421 Les gens l'ont consulté

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log() renvoie instantanément les modifications dans les références du tableau

En JavaScript, les variables contenant des valeurs primitives telles que les nombres et les chaînes sont transmises par valeur , tandis que ceux contenant des objets sont passés par référence. Cette distinction devient évidente lors de la manipulation de tableaux.

Considérez le code suivant :

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Copier après la connexion

Dans cet exemple, C se voit attribuer une référence au tableau A. Lorsque A est trié, les modifications sont immédiatement reflété dans C, avant même que A ne soit à nouveau accédé.

Pourquoi cela se produit-il ? Contrairement aux valeurs primitives, les objets sont alloués en tas, ce qui signifie qu'ils résident dans la mémoire de l'ordinateur et sont accessibles via une référence. Lorsque nous enregistrons C, console.log() imprime la référence au tableau et non une copie de son contenu. Ainsi, toute modification ultérieure de l'objet référencé (dans ce cas, le tri du tableau) sera également visible dans la console avant que A ne soit à nouveau utilisé.

Pour éviter ce comportement et enregistrer un instantané de l'objet au niveau instant console.log() est appelé, vous pouvez utiliser l'astuce suivante :

console.log(JSON.parse(JSON.stringify(C)));
Copier après la connexion

Cette technique crée une copie complète de l'objet à l'aide de la sérialisation et de la désérialisation JSON.

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