Rumah > hujung hadapan web > tutorial js > Mengapakah `console.log` Menunjukkan Nilai Objek Tidak Dijangka Selepas Pengubahsuaian?

Mengapakah `console.log` Menunjukkan Nilai Objek Tidak Dijangka Selepas Pengubahsuaian?

Linda Hamilton
Lepaskan: 2024-12-25 16:22:13
asal
778 orang telah melayarinya

Why Does `console.log` Show Unexpected Object Values After Modification?

Objek dan Console.log: Keanehan Terbongkar

Apabila bekerja dengan objek dan console.log, anda mungkin menghadapi gelagat yang pelik. Mari kita bongkar misteri ini dengan menganalisis coretan kod ini:

foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);
Salin selepas log masuk

Dalam Chrome, ini menghasilkan output yang tidak dijangka:

foo1 
[Object, Object, Object, Object, Object]  5
    0: Object
    1: Object
    2: Object
    3: Object
    length: 4
    __proto__: Array[0]
     5 (index):23
foo2 
[Object, Object, Object, Object]  4
    0: Object
    1: Object
    2: Object
    3: Object
    length: 4
    __proto__: Array[0]
Salin selepas log masuk

Peperiksaan Asynchronous

Kunci untuk memahami tingkah laku ini terletak pada sifat tak segerak pemeriksaan objek melalui konsol.log. Walaupun konsol menerima rujukan kepada objek secara serentak, ia tidak memaparkan sifatnya sehingga anda mengembangkannya secara manual.

Kejutan Pembolehubah Instance

Apabila anda mengembangkan objek selepas ia diubah suai, anda melihat nilai yang dikemas kini dan bukannya keadaan asal. Ini berlaku secara tidak segerak, yang membawa kepada output yang kelihatan tidak logik.

Teknik Nyahpepijat

Untuk mengelakkan ketidakkonsistenan ini, pertimbangkan teknik penyahpepijatan ini:

  • Log nilai individu: Log sifat objek secara berasingan (cth., console.log(obj.foo, obj.bar, obj.baz);)
  • JSON encode: Ubah objek menjadi rentetan menggunakan JSON.stringify(obj)
  • Salinan dalam pintar: Gunakan fungsi salinan dalam yang disesuaikan untuk mengekalkan sifat tidak boleh bersiri dan rujukan bulat apabila pengekodan JSON (cth. console.log(JSON.parse(JSON.stringify(obj)));)

Atas ialah kandungan terperinci Mengapakah `console.log` Menunjukkan Nilai Objek Tidak Dijangka Selepas Pengubahsuaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan