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]
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]
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)));
Atau, seperti yang dicadangkan MDN:
Object.assign({}, A)
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!