Rumah  >  Soal Jawab  >  teks badan

console.log() memaparkan nilai pembolehubah sebelum ia benar-benar berubah

<p>Saya faham kod ini. Mari buat salinan A dan panggilnya C. Apabila A berubah, C tetap sama. </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); // [2, 1] A.sort(); console.log(C); // [1, 2]</pre> <p>Bolehkah sesiapa menerangkan apa yang berlaku dalam contoh kedua? </p>
P粉356361722P粉356361722424 hari yang lalu378

membalas semua(2)saya akan balas

  • P粉578680675

    P粉5786806752023-08-23 15:48:53

    console.log()Menerima rujukan kepada objek, jadi apabila objek berubah, nilai dalam konsol juga akan berubah. Untuk mengelakkan perkara ini, anda boleh menggunakan kaedah berikut:

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

    AMARAN MDN:

    balas
    0
  • P粉949848849

    P粉9498488492023-08-23 11:15:47

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

    Tingkah laku yang diterangkan oleh OP adalah sebahagian daripada pepijat yang pertama kali dilaporkan pada Mac 2010, telah diperbaiki untuk Webkit pada Ogos 2012, tetapi sehingga berita ini ditulis masih belum disepadukan ke dalam Google Chrome. 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):

    Maklum balas daripada pembangun Chromium:

    Banyak aduan berlaku, yang akhirnya membawa kepada pembetulan pepijat.

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

    balas
    0
  • Batalbalas