console.log([]==false); //输出为true
console.log(['1']==false);//输出为false
Ia boleh dilihat bahawa ini boleh dengan cepat menentukan sama ada tatasusunan itu kosong, tetapi terdapat beberapa keraguan dalam prinsipnya.
Diketahui:
1. Operator kesamarataan "==": tukar dahulu dan kemudian bandingkan. Jika salah satu operan ialah boolean, ia ditukar kepada nilai berangka sebelum membandingkan untuk kesamaan False ditukar kepada 0 dan benar ditukar kepada 1.
2 Jika satu operan ialah objek dan satu lagi operan bukan, panggil kaedah valueOf() objek dan gunakan nilai jenis asas yang diperoleh untuk penukaran.
Jadi bahagian kanan []==fasle akan ditukar kepada 0. Bagaimana dengan sebelah kiri? Bagaimana ia ditukar?
Ini untuk anda, jadual perbandingan javascript: Operator Perhubungan dan Kesaksamaan
http://tech.youzan.com/javasc...
Anda akan faham selepas membacanya
Oleh kerana ia akan ditukar kepada nilai Boolean untuk perbandingan,
[]==false
=>
true == false //false
Tukar kepada nombor 0 dahulu, kemudian bandingkan.
Adalah masuk akal untuk menggunakan kaedah ini untuk menilai bahawa tatasusunan itu kosong, bukan?
Saya fikir ia tidak akan melantun, tetapi ternyata. Dalam kebanyakan kes, ia masih dinilai dengan panjang. Sudah tentu, panjang juga merupakan perangkap apabila menilai bilangan elemen!
Hanya boleh dikatakan bahawa mekanisme dalaman js ialah tatasusunan kosong adalah palsu, jadi false==false adalah benar! Kemudian tatasusunan bukan kosong secara semula jadi ditukar kepada benar, dan benar == salah adalah tidak benar! Adakah terdapat sesuatu yang sukar untuk difahami?