Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Log Konsol Menunjukkan Nilai Berbeza dalam Chrome, Firefox dan Safari?

Mengapa Log Konsol Menunjukkan Nilai Berbeza dalam Chrome, Firefox dan Safari?

DDD
DDDasal
2024-10-25 14:21:45948semak imbas

Why Do Console Logs Show Different Values in Chrome, Firefox, and Safari?

Perbezaan Nilai Objek Konsol dalam Chrome, Firefox dan Safari

Dalam JavaScript, objek disimpan melalui rujukan, bermakna console.log memanggil dengan argumen objek log rujukan objek. Ini boleh membawa kepada tingkah laku yang mengejutkan apabila melihat objek dalam konsol.

Dalam Firebug Firefox, pengelogan objek secara konsisten menunjukkan nilai yang betul:

Object { bar=1111 }
1111

Object { bar=2222 }
2222

Walau bagaimanapun, dalam konsol Chrome dan Safari, tingkah laku berbeza diperhatikan:

Object { bar=2222 }                      // Object shows updated value
1111                                      // Attribute value remains unchanged

Object { bar=2222 }                      // Object shows updated value
2222                                      // Attribute value is correct

Ketidakkonsistenan ini berpunca daripada keputusan reka bentuk dalam Chrome (dan Safari, kerana ia menggunakan WebKit) untuk cache objek selepas panggilan console.log yang pertama. Nilai cache digunakan untuk semua panggilan console.log berikutnya, walaupun objek dikemas kini dalam masa yang sama.

Untuk mengelakkan kekeliruan ini, disyorkan untuk menggunakan kaedah bukan objek untuk merekodkan nilai objek, seperti:

console.log(JSON.stringify(foo));      // Serializes the object into a JSON string

Sebagai alternatif, anda boleh menggunakan kaedah toJSON dan valueOf Chrome, yang menyediakan fungsi yang serupa:

console.log(foo.toJSON());                // Invokes the object's `toJSON` method (if defined)
console.log(foo.valueOf());               // Invokes the object's `valueOf` method (if defined)

Dengan menggunakan teknik ini, anda boleh memastikan bahawa nilai yang dipaparkan dalam konsol adalah konsisten dengan keadaan sebenar objek.

Atas ialah kandungan terperinci Mengapa Log Konsol Menunjukkan Nilai Berbeza dalam Chrome, Firefox dan Safari?. 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