Rumah > Soal Jawab > teks badan
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?
黄舟2017-07-05 10:53:52
Ini untuk anda, jadual perbandingan javascript: Operator Perhubungan dan Kesaksamaan
大家讲道理2017-07-05 10:53:52
Oleh kerana ia akan ditukar kepada nilai Boolean untuk perbandingan,
[]==false
=>
true == false //false
世界只因有你2017-07-05 10:53:52
Adalah masuk akal untuk menggunakan kaedah ini untuk menilai bahawa tatasusunan itu kosong, bukan?
if([]){
alert('1111');
}
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!
滿天的星座2017-07-05 10:53:52
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?