Gelagat Penilaian Konsol JavaScript Chrome untuk Objek
Dalam coretan kod yang diberikan:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Konsol Firefox dan Chrome memaparkan hasil yang berbeza. Firefox menunjukkan tatasusunan yang dikemas kini selepas pengubahsuaian, manakala Chrome memaparkan nilai yang diubah suai dalam kedua-dua keadaan.
Punca Percanggahan
Konsol JavaScript Chrome melakukan penilaian malas untuk objek. Ini bermakna ia hanya menilai objek apabila perlu, seperti apabila ia perlu memaparkannya dalam konsol. Oleh itu, dalam kes ini, Chrome tidak menilai objek semasa pernyataan console.log pertama tetapi sebaliknya menunggu sehingga pernyataan console.log kedua dilaksanakan. Ini membolehkan Chrome mengelakkan overhed menilai objek secara pramatang.
Mengelakkan Kemalasan
Untuk memaksa Chrome menilai objek dengan segera, seseorang boleh menggunakan kaedah toString bagi objek, seperti:
console.log(s.toString());
Dengan memanggil keString, perwakilan objek dibuat yang tidak akan diubah dengan pernyataan berikutnya. Apabila Chrome menilai pernyataan console.log, ia akan mempunyai nilai kemas kini objek di tangan, jadi tiada penilaian malas akan berlaku.
Atas ialah kandungan terperinci Mengapakah Konsol JavaScript Chrome Menunjukkan Gelagat Penilaian Objek Berbeza Daripada Firefox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!