Rumah > Artikel > hujung hadapan web > pengsan! Apakah output konsol soalan temu bual.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) ?
Konsol soalan temu bual.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) keluaran apa? Saya terjumpa soalan temuduga ini semasa temu duga Soalan temuduga meneliti penukaran jenis, penukaran jenis tersirat, operator, dan lain-lain. Saya tidak dapat menjawabnya. Cuma saya pening hanya membaca soalan. Namun, ia memang soalan temuduga, jadi cuba selesaikan.
Mula-mula kita perlu menjelaskan perintah pelaksanaannya
Laksanakan dahulu([][[]] + [])
, mula-mula laksanakan [][[]]
di dalam apabila mengira [][[]]
, ia sebenarnya melaksanakan nilai dengan kunci [] dalam [] tatasusunan kosong
[]
. Tatasusunan kosong tidak mempunyai unsur. []
sebagai nama sifat. Dalam kes ini, memandangkan []
itu sendiri ialah tatasusunan, enjin JavaScript akan cuba menukarnya kepada rentetan. Memandangkan []
ialah tatasusunan kosong, hasil selepas penukaran kepada rentetan ialah rentetan kosong ""
. ""
dalam tatasusunan kosong. Oleh kerana sifat ini tidak wujud dalam tatasusunan kosong, hasilnya ialah undefined
. Jadi, hasil daripada melaksanakan [][[]]
ialah undefined
.
Kemudian pelaksanaan seterusnya ([][[]] + [])
ialah (undefined + [])
, yang akan melakukan penukaran jenis tersirat, menukar undefined
kepada rentetan "undefined"
, menukar [] kepada "", dan kemudian menukar dua aksara The rentetan disambung bersama. Oleh itu, hasilnya ialah "undefined"
dan kemudian laksanakan [+!![]] Tatasusunan kosong !![] ditukar kepada nilai Boolean yang benar, dan yang unary perkhidmatan operasi + akan ditukar kepada nilai berangka +benar adalah untuk menukar true
kepada nombor 1
. Hasilnya ialah [1]
. Jadi kita boleh mendapatkan ([][[]] + [])[+!![]]
sebagai undefined[1]
Hasil daripada ini ialah rentetan 'n'
Langkah seterusnya ialah melaksanakan bahagian ([]+{})[+!![]+ + !![]]
, dan kemudian bergabung keputusan bahagian ini dengan Keputusan di atas ditambah
pertama laksanakan ([]+{})
dan kira []+{}
. Ini mencetuskan penukaran jenis tersirat, menukar objek kosong kepada rentetan"[object Object]"
dan kemudian menggabungkan dua rentetan bersama-sama. Oleh itu, hasilnya adalah '[object Object]'
.
Laksanakan [+!![]+ + !![]] sekali lagi +!![]
Hasil penghuraian sebelumnya ialah 1, jadi selepas melaksanakan bahagian ini, nilai yang diperolehi ialah 1 Tambah. 1+1
dan hasilnya ialah [2]
.
Kemudian dua bahagian yang digabungkan ialah '[object Object]'[2]
, iaitu nilai ketiga rentetan b
Akhir sekali, bahagian sebelumnya diperolehi Keputusan 'n'
ditambah pada keputusan 'b'
yang diperolehi di bahagian berikut untuk mendapatkan keputusan akhir 'nb'
Ringkasan: Jika masalah ini tidak dapat diselesaikan buat masa ini, mungkin terdapat beberapa sebab . Yang pertama adalah saya tidak tahu urutan pelaksanaan dengan baik. Kedua, saya tidak begitu faham [][[]]
Sebenarnya, ia adalah untuk mendapatkan nilai array kosong dengan kunci []
tatasusunan ialah rentetan, ia akan menukar []
menjadi ''
Ia tidak ditemui, jadi undefined dikembalikan. Adakah anda tahu soalan temuduga ini sekarang?
Pembelajaran yang disyorkan: "Tutorial video pembangunan bahagian hadapan web"
Atas ialah kandungan terperinci pengsan! Apakah output konsol soalan temu bual.log(([][[]] + [])[+!![]]+([]+{})[+!![]+ + !![]]) ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!