Maison > interface Web > js tutoriel > Pourquoi `console.log()` affiche-t-il un comportement de tableau inattendu en JavaScript ?

Pourquoi `console.log()` affiche-t-il un comportement de tableau inattendu en JavaScript ?

Linda Hamilton
Libérer: 2024-12-14 05:23:10
original
270 Les gens l'ont consulté

Why Does `console.log()` Show Unexpected Array Behavior in JavaScript?

Comportement inattendu de console.log() avec les tableaux

En JavaScript, la fonction console.log() se comporte de manière inattendue lors de l'inspection des tableaux. Ce comportement vient du fait que console.log() reçoit une référence au tableau, plutôt qu'une copie de la valeur.

Exemple :

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

Lorsque nous trions le tableau A, nous nous attendons à ce que la valeur de C reste inchangée. Cependant, ce n’est pas le cas. La valeur de C change également dans le tableau trié [1, 2].

Pourquoi cela se produit-il ?

Parce que console.log() reçoit une référence au tableau, toutes les modifications apportées au tableau d'origine sont également reflétées dans la référence détenue par C. Par conséquent, lorsque A est trié, la sortie de C également changements.

Comment éviter ce comportement :

Pour éviter ce comportement inattendu, nous pouvons utiliser la solution de contournement suivante :

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

Cela convertit le tableau C dans une chaîne en utilisant JSON.stringify(), puis de nouveau dans un tableau en utilisant JSON.parse(). Cela crée efficacement une copie complète du tableau, garantissant que les modifications apportées au tableau d'origine ne sont pas reflétées dans la copie.

Avertissement du navigateur :

Il est important de notez que le Mozilla Developer Network (MDN) met en garde contre ce comportement dans les versions récentes de Chrome et Firefox :

"Veuillez être averti que si vous enregistrez des objets dans la dernière versions de Chrome et Firefox, ce que vous obtenez enregistré sur la console est une référence à l'objet, qui n'est pas nécessairement la « valeur » de l'objet au moment où vous appelez console.log(), mais c'est la valeur du objet au moment où vous ouvrez la console. "

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