console.log() affiche la valeur modifiée avant que la valeur de la variable ne change réellement
P粉427877676
2023-08-27 22:37:24
<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>
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 :Avertissement MDN :
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) :