Rumah >hujung hadapan web >tutorial js >Mengapakah `console.log` Kadangkala Menunjukkan Keadaan Objek Yang Salah, dan Bagaimana Saya Boleh Membetulkannya?

Mengapakah `console.log` Kadangkala Menunjukkan Keadaan Objek Yang Salah, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Susan Sarandonasal
2024-12-21 09:12:14282semak imbas

Why Does `console.log` Sometimes Show the Wrong Object State, and How Can I Fix It?

Cara Memaparkan Keadaan Semasa Objek dalam Console.log

Apabila menggunakan console.log untuk mengeluarkan objek, anda mungkin menghadapi isu di mana objek yang dipaparkan mencerminkan keadaannya pada masa pelaksanaan akhir, bukan semasa console.log pada mulanya digunakan. Percanggahan ini boleh menjadi jelas terutamanya dalam Safari dan penyemak imbas tanpa sambungan tambahan.

Isu:

Pertimbangkan contoh berikut:

var test = { a: true };
console.log(test); // {a: false}
test.a = false; 
console.log(test); // {a: false}

Dalam ini senario, panggilan console.log kedua tersalah memaparkan {a: false}, walaupun nilai sebenar sifat 'a' telah ditetapkan kepada 'false'.

Penyelesaian: Menggunakan console.dir()

Untuk menyelesaikan isu ini dan memaparkan keadaan semasa objek apabila console.log dipanggil, anda boleh memanfaatkan fungsi console.dir(). Tidak seperti console.log(), console.dir() menyediakan direktori sifat objek pada masa seruan, memberikan gambaran yang tepat bagi keadaan objek.

Menggunakan JSON Stringification:

Sebagai alternatif, anda boleh menggunakan rentetan dan penghuraian JSON untuk mencapai yang serupa hasil:

console.log(JSON.parse(JSON.stringify(obj)));

Pendekatan ini melibatkan penukaran objek kepada rentetan JSON menggunakan JSON.stringify() dan kemudian menghuraikannya kembali kepada objek JSON menggunakan JSON.parse(). Ini secara berkesan mengklon objek, membolehkan anda memaparkan keadaan semasanya dengan tepat.

Atas ialah kandungan terperinci Mengapakah `console.log` Kadangkala Menunjukkan Keadaan Objek Yang Salah, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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