Konsol JavaScript Chrome Mempamerkan Penilaian Objek Tidak Dijangka
Dalam perbandingan antara konsol Firefox dan Chrome JavaScript, tingkah laku yang pelik muncul. Walaupun Firefox mencetak nilai awal dengan tepat dan pengubahsuaian susulan tatasusunan, Chrome hanya memaparkan nilai yang diubah suai untuk kedua-dua keadaan.
Masalah:
Kod berikut menggambarkan isu tersebut :
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Konsol Firefox menghasilkan yang diharapkan output:
["hi"] ["bye"]
Walau bagaimanapun, konsol Chrome memaparkan:
["bye"] ["bye"]
Jawapan:
Tingkah laku ini disebabkan oleh yang diketahui dan kini diperbaiki pepijat dalam Webkit: https://bugs.webkit.org/show_bug.cgi?id=35801. Ia melibatkan penilaian malas konsol terhadap objek.
Penilaian malas bermaksud konsol tidak menilai objek sehingga ia bersedia untuk memaparkan output. Ini berlaku walaupun objek telah diubah suai sebelum konsol menjadi aktif.
Penyelesaian:
Untuk mengelakkan isu ini, seseorang boleh menukar objek kepada perwakilan rentetan sebelum mengelog ia:
var s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString());
Ini memaksa penilaian objek serta-merta, dan konsol mengeluarkan:
hi bye
Atas ialah kandungan terperinci Mengapakah Konsol JavaScript Chrome Hanya Menunjukkan Nilai Akhir Tatasusunan Diubah Suai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!