Maison  >  Article  >  interface Web  >  Console.log() affiche-t-il correctement les objets et les tableaux dans Google Chrome ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-20 12:30:02542parcourir

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>

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>

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!

Déclaration:
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