console.log() affiche la valeur modifiée avant que la valeur de la variable ne change réellement
P粉427877676
P粉427877676 2023-08-27 22:37:24
0
2
469

Je comprends ce code. Nous copions A et l'appelons C. Lorsque A change, C reste inchangé

var A = 1; varC = A ; console.log(C); // 1 A++ ; console.log(C); // 1

Mais lorsque A est un tableau, la situation est différente. Non seulement C change, mais il change avant que nous touchions A

var A = [2, 1]; varC = A ; console.log(C); // [1, 2] Un tri(); console.log(C); // [1, 2]

Quelqu’un peut-il expliquer ce qui se passe dans le deuxième exemple ?

P粉427877676
P粉427877676

répondre à tous (2)
P粉023326773

console.log()transmettra uneré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:

    P粉795311321

    La réponse de Pointyfournit 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 estconsole.log()ouverteouferméelors 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) :

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!