Rumah > Soal Jawab > teks badan
js dalam konsol
++[[]][0]
为什么这个不报错++[]
Di manakah laporan ralat ini
迷茫2017-05-19 10:22:53
[[]]
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
(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 kod>, hasilnya ialah ++
Dapatkan 1. Sila lihat output konsol untuk butiran: rrreee
LvalueApakah 🎜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.🎜🎜ialah tatasusunan kosong, bukan nilai sah, jadi ralat dilaporkan.
过去多啦不再A梦2017-05-19 10:22:53
Saya telah menjawab soalan ini sebelum ini dan menyiarkan pautan terus:
masalah penukaran jenis js