Semasa menyahpepijat kod dalam Google Chrome, ia adalah memerhatikan bahawa console.log() berkelakuan aneh apabila berurusan dengan tatasusunan bersarang. Apabila tatasusunan dilog, mengubah suai nilai dalamannya selepas pengelogan menghasilkan output yang dilog mencerminkan nilai yang dikemas kini dan bukannya nilai pada masa pengelogan. Tingkah laku ini tiada dalam Firefox.
Penyiasatan selanjutnya mendedahkan bahawa ketidakkonsistenan itu timbul apabila konsol Chrome dibuka semasa pemuatan. Dengan konsol pada mulanya ditutup dan dibuka selepas halaman dimuatkan, console.log() memaparkan nilai sebenar tatasusunan pada masa pengelogan.
Selepas penyelidikan menyeluruh, ia didapati bahawa tingkah laku ini telah diakui sebagai pepijat dalam Webkit. Walau bagaimanapun, pembetulan telah dilaksanakan pada Ogos 2012 dan masih belum dikeluarkan dalam Google Chrome.
Seorang pembangun Chromium mengulas tentang pepijat, menyatakan bahawa pengklonan objek apabila dihiburkan mungkin tidak boleh dilaksanakan. Selain itu, mendengar perubahan sifat objek untuk mengekalkan nilai yang tepat tidak akan menjadi praktikal.
Pelaksanaan console.log() semasa mengelakkan pengklonan objek apabila memaparkannya dalam konsol. Sebaliknya, pratonton singkatan dijana semasa mengelog, memberikan gambaran bagi sifat objek. Ini berlaku hanya jika konsol sudah terbuka, yang menerangkan percanggahan dalam gelagat bergantung pada keadaan awal konsol.
Tingkah laku tidak konsisten dalam console.log() Google Chrome ini ialah disebabkan oleh pelaksanaan pengendalian objek dalam konsol. Tingkah laku yang diharapkan harus kekal kerana pratonton mencerminkan nilai objek pada masa pengelogan. Pembangun harus mengetahui tingkah laku ini dan menggunakan kaedah penyahpepijatan alternatif apabila boleh.
Atas ialah kandungan terperinci Apakah yang Menyebabkan Gelagat Tidak Konsisten dalam Console.log() Google Chrome dengan Tatasusunan dan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!