Rumah >hujung hadapan web >tutorial js >Mengapa Log Konsol Menunjukkan Nilai Berbeza dalam Chrome, Firefox dan 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!