Rumah  >  Artikel  >  hujung hadapan web  >  Adakah Console.log() Mengeluarkan Objek dan Tatasusunan dengan Betul dalam Google Chrome?

Adakah Console.log() Mengeluarkan Objek dan Tatasusunan dengan Betul dalam Google Chrome?

Barbara Streisand
Barbara Streisandasal
2024-10-20 12:30:02542semak imbas

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Console.log() Ketidakkonsistenan dengan Objek dan Tatasusunan dalam Google Chrome

Console.log(), alat penyahpepijatan dalam Google Chrome, mempamerkan tingkah laku pelik apabila digunakan dengan objek dan tatasusunan. Anomali ini nyata apabila:

  1. Susun atur bersarang dibuat (cth., [[345,"ujian"]]).
  2. Susun atur direkodkan ke konsol.
  3. Nilai tatasusunan dalam diubah suai dan console.log() kemudiannya memaparkan nilai yang diubah suai, bukan nilai tatasusunan pada masa pelaksanaan.
<code class="javascript">var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}

var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]</code>

Menariknya, tingkah laku ini adalah eksklusif untuk Chrome; Firefox tidak mempamerkannya. Selain itu, jika kod itu dilangkah melalui baris demi baris dalam penyahpepijat Chrome, console.log() memaparkan nilai yang betul.

Asal usul Fenomena

Siasatan lanjut mendedahkan bahawa ini adalah pepijat yang diketahui yang telah diselesaikan dalam Webkit tetapi belum dimasukkan ke dalam Google Chrome. Pepijat itu pada mulanya dilaporkan pada Mac 2010 (https://bugs.webkit.org/show_bug.cgi?id=35801), dan pembetulan telah dilaksanakan pada Ogos 2012. Walau bagaimanapun, ia masih belum masuk ke Chrome.

Kesan Keadaan Konsol

Kelakuan console.log() dipengaruhi oleh keadaan tetingkap konsol. Jika tetingkap konsol dibuka pada masa skrip dimuatkan, console.log() akan memaparkan nilai semasa tatasusunan dan objek. Walau bagaimanapun, jika tetingkap konsol ditutup dan dibuka selepas skrip dimuatkan, console.log() akan memaparkan nilai yang diubah suai, walaupun ia ditukar selepas pelaksanaan console.log().

<code class="javascript">var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);</code>

Jika skrip di atas dilaksanakan dengan tetingkap konsol sudah terbuka, console.log() akan memaparkan dua item. Jika tetingkap konsol ditutup dan dibuka semula selepas halaman dimuatkan, console.log() akan memaparkan tiga item, mencerminkan keadaan tatasusunan yang diubah suai.

Keanehan ini mencadangkan kemungkinan pepijat dalam kefungsian console.log() Google Chrome , yang masih belum dibetulkan dalam versi semasa Chrome.

Atas ialah kandungan terperinci Adakah Console.log() Mengeluarkan Objek dan Tatasusunan dengan Betul dalam Google Chrome?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn