Rumah > hujung hadapan web > tutorial js > Mengapakah `console.log()` Nampaknya Menunjukkan Nilai Tatasusunan Berubah Sebelum Pengubahsuaian dalam JavaScript?

Mengapakah `console.log()` Nampaknya Menunjukkan Nilai Tatasusunan Berubah Sebelum Pengubahsuaian dalam JavaScript?

Susan Sarandon
Lepaskan: 2025-01-05 07:09:39
asal
745 orang telah melayarinya

Why Does `console.log()` Seem to Show Altered Array Values Before Modification in JavaScript?

Output Konsol Mengubah Nilai Tatasusunan Sebelum Pengubahsuaian

Dalam JavaScript, pembolehubah biasanya diluluskan melalui rujukan, bermakna perubahan dibuat kepada pembolehubah selepasnya telah ditugaskan kepada pembolehubah lain akan dicerminkan dalam kedua-dua pembolehubah. Tingkah laku ini sering diperhatikan apabila console.log() digunakan untuk memaparkan nilai pembolehubah.

Sebagai contoh, pertimbangkan kod berikut:

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

Dalam contoh ini, pembolehubah C diberikan rujukan kepada tatasusunan yang disimpan dalam pembolehubah A. Apabila console.log(C) dilaksanakan, ia mengeluarkan nilai semasa tatasusunan, iaitu [1, 2]. Walau bagaimanapun, nilai ini mungkin tidak terkini jika tatasusunan asal A diubah suai kemudian.

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

Setelah melaksanakan kaedah sort() pada tatasusunan A, elemennya diisih di tempatnya. Memandangkan tatasusunan C memegang rujukan kepada objek yang sama, output console.log(C) kekal [1, 2]. Ini kerana console.log() memaparkan nilai semasa objek pada masa pelaksanaan, bukan nilai statik.

Untuk mengelakkan tingkah laku yang tidak dijangka ini dan memastikan console.log() mengeluarkan nilai yang tepat, anda boleh sama ada menggunakan:

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

Atau, seperti yang dicadangkan MDN:

Object.assign({}, A)
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `console.log()` Nampaknya Menunjukkan Nilai Tatasusunan Berubah Sebelum Pengubahsuaian 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