Logik ATAU (||)
hasil var = benar ||
Sama seperti operasi logik AND, logik OR tidak semestinya mengembalikan nilai Boolean jika salah satu operan bukan nilai Boolean dalam kes ini, ia mengikut peraturan berikut:
□ Jika operan pertama ialah objek, kembalikan operan pertama.
□ Jika kedua-dua operan ialah objek, kembalikan operan pertama.
□ Jika kedua-dua operan adalah nol, kembalikan null
□ Jika kedua-duanya tidak ditentukan, kembalikan tidak ditentukan.
□ Jika kedua-duanya adalah NaN, kembalikan NaN
Perbezaan antara “===” dan “==”
Pengendali kesaksamaan (==)
Pengendali kesaksamaan melakukan penukaran tersirat pada nilai operasi sebelum perbandingan:Jika nilai operan ialah boolean, tukarkannya kepada nilai angka sebelum membandingkan
Jika satu nilai operasi ialah rentetan dan nilai operasi lain ialah nilai angka, rentetan itu ditukar kepada nilai angka melalui fungsi Number()
Jika satu nilai operasi ialah objek dan satu lagi bukan, kaedah valueOf() objek dipanggil dan hasilnya dibandingkan mengikut peraturan sebelumnya
null dan undefined adalah sama
Jika nilai operasi ialah NaN, perbandingan kesamaan mengembalikan palsu
Jika kedua-dua nilai operan adalah objek, bandingkan sama ada ia menunjuk kepada objek yang sama. Operator kesamaan mengembalikan benar jika kedua-dua operan menghala ke objek yang sama, jika tidak, mengembalikan palsu
Berikut dijelaskan masing-masing:
Mari kita bercakap tentang === pertama, ini agak mudah. Peraturan berikut digunakan untuk menentukan sama ada dua nilai === sama:
1. Jika jenisnya berbeza, [tidak sama]
2. Jika kedua-duanya adalah nilai berangka dan nilai yang sama, maka [sama]; (!Pengecualian) ialah jika sekurang-kurangnya satu daripadanya ialah NaN, maka [tidak sama]. (Untuk menentukan sama ada nilai ialah NaN, anda hanya boleh menggunakan isNaN() untuk menentukan)
3. Jika kedua-duanya adalah rentetan dan aksara pada setiap kedudukan adalah sama, maka [sama] jika tidak [tidak sama].
4. Jika kedua-dua nilai adalah benar, atau kedua-duanya palsu, maka [sama].
5. Jika kedua-dua nilai merujuk kepada objek atau fungsi yang sama, maka [sama]; jika tidak [tidak sama].
6. Jika kedua-dua nilai adalah nol, atau kedua-duanya tidak ditentukan, maka [sama].
1. Jika kedua-dua jenis nilai adalah sama, lakukan === perbandingan.
2. Jika dua jenis nilai berbeza, ia mungkin sama. Lakukan penukaran jenis dan perbandingan mengikut peraturan berikut:
a. Jika satu batal dan satu lagi tidak ditentukan, maka [sama].
b. Jika satu rentetan dan satu lagi nilai berangka, tukar rentetan itu kepada nilai berangka dan kemudian bandingkan.
c. Jika mana-mana nilai adalah benar, tukarkannya kepada 1 dan bandingkan jika ada nilai salah, tukarkannya kepada 0 dan bandingkan;
d. Jika satu adalah objek dan satu lagi adalah nilai angka atau rentetan, tukar objek itu kepada nilai jenis asas dan kemudian bandingkan. Objek ditukar kepada jenis asas menggunakan kaedah toString atau valueOf. Kelas terbina dalam teras JS akan mencuba valueOf sebelum toString pengecualian ialah Date, yang menggunakan penukaran toString. Objek teras bukan js, Ling Shuo (lebih menyusahkan, saya kurang faham)
e. Mana-mana kombinasi lain adalah [tidak sama].
null==undefined true true==1 true
"NaN" ==NaN false $null==0 false
palsu==0 benar NaN!=NaN benar
Ringkasnya, "==" hanya memerlukan nilai yang sama. "===" memerlukan kedua-dua nilai dan jenis adalah sama.