Rumah > hujung hadapan web > tutorial js > Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera dalam JavaScript?

Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera dalam JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-12-13 01:15:10
asal
420 orang telah melayarinya

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

console.log() Menggemakan Perubahan dalam Rujukan Tatasusunan Serta-merta

Dalam JavaScript, pembolehubah yang memegang nilai primitif seperti nombor dan rentetan dihantar mengikut nilai , manakala yang mengandungi objek diluluskan melalui rujukan. Perbezaan ini menjadi jelas apabila memanipulasi tatasusunan.

Pertimbangkan kod berikut:

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

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Salin selepas log masuk

Dalam contoh ini, C diberikan rujukan kepada tatasusunan A. Apabila A diisih, perubahannya adalah serta-merta dipantulkan dalam C, walaupun sebelum A diakses semula.

Mengapa ini berlaku? Tidak seperti nilai primitif, objek diperuntukkan timbunan, bermakna ia berada dalam memori komputer dan diakses melalui rujukan. Apabila kita log C, console.log() mencetak rujukan kepada tatasusunan dan bukan salinan kandungannya. Oleh itu, sebarang pengubahsuaian seterusnya kepada objek yang dirujuk (dalam kes ini, menyusun tatasusunan) juga akan dilihat dalam konsol sebelum A digunakan semula.

Untuk mengelakkan tingkah laku ini dan log syot kilat objek di instant console.log() dipanggil, anda boleh menggunakan helah berikut:

console.log(JSON.parse(JSON.stringify(C)));
Salin selepas log masuk

Teknik ini mencipta salinan dalam objek menggunakan pensirian JSON dan penyahserikatan.

Atas ialah kandungan terperinci Mengapa Adakah `console.log()` Menunjukkan Perubahan Susunan Segera dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan