Maison > interface Web > js tutoriel > le corps du texte

Console.log() affiche-t-il correctement les objets et les tableaux dans Google Chrome ?

Barbara Streisand
Libérer: 2024-10-20 12:30:02
original
541 Les gens l'ont consulté

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Console.log() Incohérence avec les objets et les tableaux dans Google Chrome

Console.log(), un outil de débogage dans Google Chrome, présente un comportement particulier lorsqu'il est utilisé avec des objets et des tableaux. Cette anomalie se manifeste lorsque :

  1. Un tableau imbriqué est créé (par exemple, [[345,"test"]]).
  2. Le tableau est connecté à la console.
  3. Une valeur interne du tableau est modifiée et console.log() affiche ensuite la valeur modifiée, et non les valeurs du tableau au moment de l'exécution.
<code class="javascript">var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}

var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]</code>
Copier après la connexion

Fait intéressant, ce comportement est exclusif à Chrome ; Firefox ne l'expose pas. De plus, si le code est parcouru ligne par ligne dans le débogueur Chrome, console.log() affiche les valeurs correctes.

Origine du phénomène

Une enquête plus approfondie a révélé qu'il s'agit d'un bug connu qui a été résolu dans Webkit mais pas encore intégré à Google Chrome. Le bug a été initialement signalé en mars 2010 (https://bugs.webkit.org/show_bug.cgi?id=35801) et un correctif a été mis en œuvre en août 2012. Cependant, il n'a pas encore été intégré à Chrome.

Impact sur l'état de la console

Le comportement de console.log() est influencé par l'état de la fenêtre de la console. Si la fenêtre de la console est ouverte au moment du chargement d'un script, console.log() affichera la valeur actuelle des tableaux et des objets. Cependant, si la fenêtre de la console est fermée et ouverte après le chargement du script, console.log() affichera les valeurs modifiées, même si elles ont été modifiées après l'exécution de console.log().

<code class="javascript">var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);</code>
Copier après la connexion

Si le script ci-dessus est exécuté avec la fenêtre de console déjà ouverte, console.log() affichera deux éléments. Si la fenêtre de la console est fermée et rouverte après le chargement de la page, console.log() affichera trois éléments, reflétant l'état modifié du tableau.

Cette particularité suggère un bug potentiel dans la fonctionnalité console.log() de Google Chrome. , qui n'est pas corrigé dans la version actuelle de Chrome.

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