console.log() affiche la valeur d'une variable avant qu'elle ne change réellement
P粉356361722
2023-08-22 17:35:57
<p>Je comprends ce code. Faisons une copie de A et appelons-le C. Quand A change, C reste le même. </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 même que nous touchions A. </p>
<pre class="brush:php;toolbar:false;">var A = [2, 1];
varC = A ;
console.log(C); // [2, 1]
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()
Reçoit une référence à l'objet, donc lorsque l'objet change, la valeur dans la console changera également. Pour éviter cela, vous pouvez utiliser les méthodes suivantes :AVERTISSEMENT MDN :
La réponse de Pointy fournit de bonnes informations, mais n'est pas la bonne réponse à la question.
Le comportement décrit par l'OP fait partie d'un bug qui a été signalé pour la première fois en mars 2010 et qui avait un correctif pour Webkit en août 2012, mais au moment d'écrire ces lignes, il n'était pas encore intégré à Google Chrome. Le comportement dépend si la fenêtre de débogage de la console est
console.log()
ouverte ou fermée lors du passage du littéral objet à .Extrait du rapport de bug original (https://bugs.webkit.org/show_bug.cgi?id=35801) :
Réponse des développeurs Chromium :
De nombreuses plaintes ont suivi, ce qui a finalement conduit à une correction de bug.
Description du journal des modifications du patch implémenté en août 2012 (http://trac.webkit.org/changeset/125174) :