cari

Rumah  >  Soal Jawab  >  teks badan

console.log() memaparkan nilai yang diubah sebelum nilai berubah sebenarnya berubah

<p>Saya faham kod ini. Kami menyalin A dan memanggilnya C. Apabila A berubah, C kekal tidak berubah</p> <pre class="brush:php;toolbar:false;">var A = 1; var C = A; console.log(C); // 1 A++; console.log(C); // 1</pre> <p>Tetapi apabila A ialah tatasusunan, keadaannya berbeza. Bukan sahaja C berubah, tetapi ia berubah sebelum kita menyentuh A</p> <pre class="brush:php;toolbar:false;">var A = [2, 1]; var C = A; console.log(C); // [1, 2] A.sort(); console.log(C); // [1, 2]</pre> <p>Bolehkah seseorang menerangkan apa yang berlaku dalam contoh kedua? </p>
P粉427877676P粉427877676459 hari yang lalu542

membalas semua(2)saya akan balas

  • P粉023326773

    P粉0233267732023-08-28 15:10:01

    console.log() akan menghantar rujukan kepada objek, jadi nilai dalam konsol akan berubah apabila objek berubah. Untuk mengelakkan ini anda boleh:

    console.log(JSON.parse(JSON.stringify(c)))

    Amaran MDN:

    balas
    0
  • P粉795311321

    P粉7953113212023-08-28 12:26:58

    Jawapan Pointy memberikan maklumat yang baik, tetapi ia bukan jawapan yang betul untuk soalan ini.

    Tingkah laku yang diterangkan oleh OP adalah sebahagian daripada pepijat yang pertama kali dilaporkan pada Mac 2010 dan ditambal untuk Webkit pada Ogos 2012, tetapi masih belum disepadukan ke dalam Google Chrome setakat artikel ini ditulis. Tingkah laku bergantung pada sama ada tetingkap nyahpepijat konsol console.log() terbuka atau tertutup apabila menghantar objek literal kepada .

    Petikan daripada laporan pepijat asal (https://bugs.webkit.org/show_bug .cgi?id=35801):

    Respons pembangun Chromium:

    Banyak aduan berlaku, yang akhirnya membawa kepada pembetulan pepijat.

    Perihalan changelog untuk tampung yang dilaksanakan pada Ogos 2012 (http://trac.webkit.org/changeset/ 125174):

    balas
    0
  • Batalbalas