console.log() は、変数値が実際に変更される前に、変更された値を表示します。
P粉427877676
2023-08-27 22:37:24
<p>このコードは理解できました。 A をコピーして C と呼びます。 A が変化しても、C は変化しません。
<pre class="brush:php;toolbar:false;">var A = 1;
var C = A;
console.log(C); // 1
A;
console.log(C); // 1;
<p>しかし、A が配列の場合は状況が異なります。 C が変化するだけでなく、A</p> に触れる前にも変化します。
<pre class="brush:php;toolbar:false;">var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2];
<p>誰かが 2 番目の例で何が起こっているのか説明できますか? </p>
リーリーconsole.log()
は reference をオブジェクトに渡すため、オブジェクトが変更されるとコンソール内の値も変更されます。これを回避するには:MDN 警告:
Pointy の回答 は良い情報を提供しますが、この質問に対する正しい回答ではありません。
OP で説明されている動作は、2010 年 3 月に最初に報告され、2012 年 8 月に Webkit 用にパッチが適用されたバグの一部でしたが、この記事の執筆時点ではまだ Google Chrome には統合されていません。動作は、オブジェクト リテラルを
であるかによって異なります。console.log()
. に渡すときに、コンソール デバッグ ウィンドウが open であるか closed元のバグレポートからの抜粋 (https://bugs.webkit.org/show_bug .cgi?id=35801):
Chromium 開発者の応答:
多くの苦情が寄せられ、最終的にはバグ修正につながりました。
2012 年 8 月に実装されたパッチの変更ログの説明 (http://trac.webkit.org/changeset/125174):