cari

Rumah  >  Soal Jawab  >  teks badan

javascript + operator

js dalam konsol

++[[]][0] 为什么这个不报错
++[] Di manakah laporan ralat ini

我想大声告诉你我想大声告诉你2748 hari yang lalu413

membalas semua(2)saya akan balas

  • 迷茫

    迷茫2017-05-19 10:22:53

    ++[[]][0]:
    [[]] ialah tatasusunan yang mengandungi hanya tatasusunan kosong, kemudian mengikut keutamaan pengendali, < kod >[] > (awalan)++, kendalikan [[]][0] dan dapatkan tatasusunan kosong Array(0), iaitu Objek,++[[]][0]:
    [[]]是一个只包含一个空数组的数组,那么根据运算符优先级,[] > (prefix)++,运算[[]][0],得到一个空数组Array(0),是一个对象,并且是数组中的一个值,符合左值的条件.之后进行(prefix)++运算,由于++运算将执行数据类型转换(PS:Javascript中具体的数据类型转换太复杂了,我就不展开了),这里Array[0]将转换成0,结果++得到1.

    具体可看控制台输出:

    console.log([[]])
    // > [Array(0)]
    console.log([[]][0])
    // > []
    

    ++[]dan ialah nilai dalam tatasusunan, memenuhi syarat lvalue

    Kemudian lakukan operasi (prefix)++, kerana operasi ++ akan melaksanakan penukaran Jenis data (PS: Penukaran jenis data khusus dalam Javascript terlalu rumit, saya tidak akan mengembangkannya), di sini Array[0] akan ditukar menjadi 0, hasilnya ialah ++Dapatkan 1.

    Sila lihat output konsol untuk butiran: rrreee

    ++[]:
    Lvalue

    ialah tatasusunan kosong, bukan nilai sah, jadi ralat dilaporkan.

    Apakah 🎜nilai kiri🎜:🎜 🎜🎜Lvalue ialah istilah lama yang bermaksud ungkapan hanya boleh muncul di sebelah kiri pengendali tugasan. Dalam JavaScript, pembolehubah, sifat objek dan elemen tatasusunan adalah semua nilai.🎜🎜

    balas
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:22:53

    Saya telah menjawab soalan ini sebelum ini dan menyiarkan pautan terus:

    masalah penukaran jenis js

    balas
    0
  • Batalbalas