Maison  >  Questions et réponses  >  le corps du texte

console.log() affiche la valeur modifiée avant que la valeur de la variable ne change réellement

<p>Je comprends ce code. Nous copions A et l'appelons C. Lorsque A change, C reste inchangé</p> <pre class="brush:php;toolbar:false;">var A = 1; varC = A ; console.log(C); // 1 A++ ; console.log(C); // 1</pre> <p>Mais lorsque A est un tableau, la situation est différente. Non seulement C change, mais il change avant que nous touchions A</p> <pre class="brush:php;toolbar:false;">var A = [2, 1]; varC = A ; console.log(C); // [1, 2] Un tri(); console.log(C); // [1, 2]</pre> <p>Quelqu’un peut-il expliquer ce qui se passe dans le deuxième exemple ? </p>
P粉427877676P粉427877676441 Il y a quelques jours520

répondre à tous(2)je répondrai

  • P粉023326773

    P粉0233267732023-08-28 15:10:01

    console.log() transmettra une référence à l'objet, donc la valeur dans la console changera à mesure que l'objet change. Pour éviter cela vous pouvez :

    console.log(JSON.parse(JSON.stringify(c)))

    Avertissement MDN :

    répondre
    0
  • P粉795311321

    P粉7953113212023-08-28 12:26:58

    La réponse de Pointy fournit de bonnes informations, mais ce n'est pas la bonne réponse à cette question.

    Le comportement décrit par l'OP faisait partie d'un bug signalé pour la première fois en mars 2010 et corrigé pour Webkit en août 2012, mais n'a pas encore été intégré à Google Chrome au moment d'écrire ces lignes. Le comportement dépend si la fenêtre de débogage de la console est console.log() ouverte ou fermée lors du passage d'un objet littéral à .

    Extrait du rapport de bug original (https://bugs.webkit.org/show_bug .cgi?id=35801) :

    Réponse du développeur Chromium :

    De nombreuses plaintes ont suivi, qui ont finalement conduit à une correction de bug.

    Description du journal des modifications pour le correctif implémenté en août 2012 (http://trac.webkit.org/changeset/ 125174) :

    répondre
    0
  • Annulerrépondre