Dalam persekitaran JavaScript, situasi yang membingungkan timbul apabila mengakses kanak-kanak elemen melalui console.log. Pertimbangkan senario berikut:
Elemen 1:
console.log(element1.children); // Expected behaviour /* Output: [<li>...</li>, <li>...</li>] Length: 2 */
Elemen 2:
console.log(element2.children); /* Output: [] Length: 0 */
Walau bagaimanapun, apabila elemen2 dikembangkan dalam konsol, ia secara tidak dijangka mendedahkan tiga elemen kanak-kanak :
/* Output: [<li>...</li>, <li>...</li>, <li>...</li>] Length: 3 */
Kunci untuk memahami percanggahan ini terletak pada sifat console.log. Apabila mengelog objek, konsol menetapkan rujukan langsung, bukan syot kilat. Oleh itu, apabila objek dikembangkan, konsol memaparkan keadaan semasanya, bukannya keadaan semasa pengelogan.
Dalam kes ini, koleksi element2 berkemungkinan kosong pada mulanya dan kemudian diisi kemudian.
Untuk menyelesaikan isu ini, adalah perlu untuk memastikan koleksi diisi sebelum log atau menggunakannya dalam kod. Ini boleh dicapai dengan:
Adalah penting untuk ambil perhatian ikon biru halus (i) di sebelah objek yang dilog dalam konsol, yang memaparkan petua alat yang menunjukkan sama ada nilai yang dipaparkan ialah syot kilat atau penilaian baru-baru ini. Ini boleh membantu mengelakkan kekeliruan.
Selain itu, menggunakan penyahpepijat memberikan pandangan yang lebih komprehensif tentang pelaksanaan skrip dan membolehkan kawalan yang lebih besar ke atas masa acara.
Atas ialah kandungan terperinci Mengapakah `console.log` Menunjukkan Kiraan Elemen Kanak-kanak yang Berbeza untuk Elemen yang Sama dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!