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
522
<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粉427877676
P粉427877676

répondre à tous(2)
P粉023326773

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 :

P粉795311321

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

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!