ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で「console.log()」が配列の変更を即座に示すのはなぜですか?

JavaScript で「console.log()」が配列の変更を即座に示すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-13 01:15:10
オリジナル
421 人が閲覧しました

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log() 配列参照の変更を即座にエコーします

JavaScript では、数値や文字列などのプリミティブな値を保持する変数は値によって渡されます、オブジェクトを含むものは参照によって渡されます。この違いは、配列を操作するときに明らかになります。

次のコードを考えてみましょう:

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
ログイン後にコピー

この例では、C に配列 A への参照が割り当てられます。A が並べ替えられると、変更は次のようになります。 A が再度アクセスされる前であっても、すぐに C に反映されます。

これはなぜ発生しますか?プリミティブ値とは異なり、オブジェクトはヒープに割り当てられます。つまり、オブジェクトはコンピュータのメモリ内に存在し、参照を通じてアクセスされます。 C をログに記録すると、console.log() は配列の内容のコピーではなく、配列への参照を出力します。したがって、参照されたオブジェクトに対する後続の変更 (この場合、配列のソート) も、A が再度使用される前にコンソールに表示されます。

この動作を回避し、オブジェクトのスナップショットをログに記録するには、 console.log() が呼び出される瞬間に、次のトリックを使用できます:

console.log(JSON.parse(JSON.stringify(C)));
ログイン後にコピー

このテクニックは、JSON シリアル化を使用してオブジェクトのディープ コピーを作成し、逆シリアル化。

以上がJavaScript で「console.log()」が配列の変更を即座に示すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート