Maison >interface Web >js tutoriel >Pourquoi `console.log()` affiche-t-il un comportement de tableau inattendu en 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]
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)))
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!