ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「console.log()」が変更前に変更された配列値を表示しているように見えるのはなぜですか?
コンソールは、変更前に変更された配列値を出力します
JavaScript では、変数は通常、参照によって渡されます。つまり、変数はその後に変更されます。別の変数に割り当てられた場合は、両方の変数に反映されます。この動作は、console.log() を使用して変数の値を表示するときによく見られます。
たとえば、次のコードを考えてみましょう。
let A = [2, 1]; let C = A; console.log(C); // [1, 2]
この例では、変数 C console.log(C) が実行されると、配列の現在の値 [1, 2] が出力されます。ただし、元の配列 A が後で変更された場合、この値は最新ではない可能性があります。
A.sort(); console.log(C); // [1, 2]
配列 A で sort() メソッドを実行すると、その要素はその場で並べ替えられます。配列 C は同じオブジェクトへの参照を保持しているため、console.log(C) の出力は [1, 2] のままです。これは、console.log() が静的な値ではなく、実行時のオブジェクトの現在の値を表示するためです。
この予期しない動作を回避し、console.log() が正確な値を出力するようにするには、次のようにします。
console.log(JSON.parse(JSON.stringify(C)));
または MDN が示唆するように、次のいずれかを使用できます:
Object.assign({}, A)
以上がJavaScript で「console.log()」が変更前に変更された配列値を表示しているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。