Rumah >hujung hadapan web >tutorial js >Mengapa Adakah `console.log()` Menunjukkan Gelagat Susunan Tidak Dijangka dalam JavaScript?
Gelagat Tidak Dijangka console.log() dengan Tatasusunan
Dalam JavaScript, fungsi console.log() bertindak secara tidak dijangka semasa memeriksa tatasusunan. Tingkah laku ini berpunca daripada fakta bahawa console.log() dihantar rujukan kepada tatasusunan, bukannya salinan nilai.
Contoh:
var A = [2, 1]; var C = A; console.log(C); // [1, 2] A.sort(); console.log(C); // [1, 2]
Apabila kita mengisih tatasusunan A, kita menjangkakan nilai C kekal tidak berubah. Walau bagaimanapun, ini tidak berlaku. Nilai C berubah kepada tatasusunan yang diisih [1, 2] juga.
Mengapa ini berlaku?
Kerana console.log() diluluskan rujukan kepada tatasusunan, sebarang perubahan yang dibuat kepada tatasusunan asal juga ditunjukkan dalam rujukan yang dipegang oleh C. Oleh itu, apabila A diisih, output C juga perubahan.
Cara untuk mengelakkan tingkah laku ini:
Untuk mengelakkan tingkah laku yang tidak dijangka ini, kita boleh menggunakan penyelesaian berikut:
console.log(JSON.parse(JSON.stringify(C)))
Ini menukar tatasusunan C ke dalam rentetan menggunakan JSON.stringify(), kemudian kembali ke dalam tatasusunan menggunakan JSON.parse(). Ini secara berkesan mencipta salinan dalam tatasusunan, memastikan bahawa sebarang perubahan yang dibuat pada tatasusunan asal tidak ditunjukkan dalam salinan.
Amaran Pelayar:
Adalah penting untuk ambil perhatian bahawa Rangkaian Pembangun Mozilla (MDN) memberi amaran tentang tingkah laku ini dalam versi terbaru Chrome dan Firefox:
"Sila ambil amaran bahawa jika anda log objek dalam versi terkini Chrome dan Firefox, perkara yang anda log masuk pada konsol ialah rujukan kepada objek, yang tidak semestinya 'nilai' objek pada masa anda memanggil console.log(), tetapi ia adalah nilai objek semasa anda membuka konsol."
Atas ialah kandungan terperinci Mengapa Adakah `console.log()` Menunjukkan Gelagat Susunan Tidak Dijangka dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!