Nilai-nilai Falsey dalam JavaScript
false
- Nol dari
Numberjenis: 0dan juga -0, 0.0, dan bentuk hex 0x0( berkat RBT )
- Nol dari
BigIntjenis: 0ndan -0n(baru pada tahun 2020, berkat GetMeARemoteJob )
"", ''dan ``- string dengan panjang 0
null
undefined
NaN
document.all (hanya di browser HTML)
"Falsey" berarti bahwa ToBooleanfungsi internal JavaScript kembali false. ToBooleanmendasari !value, value ? ... : ...;dan if (value). Berikut spesifikasi resminya (draft kerja 2020) (satu-satunya perubahan sejak spesifikasi skrip ECMA pertama pada tahun 1997 adalah penambahan simbol ES6 , yang selalu benar, dan BigInt, disebutkan di atas:

Perbandingan dengan ==(kesetaraan longgar)
Ada baiknya berbicara tentang perbandingan longgar== nilai-nilai palsu , yang menggunakan ToNumber()dan dapat menyebabkan beberapa kebingungan karena perbedaan mendasar. Mereka secara efektif membentuk tiga kelompok:
false, 0, -0, "", '' semua cocok satu sama lain dengan ==
- misalnya
false == "", '' == 0dan karenanya4/2 - 2 == 'some string'.slice(11);
null, undefined cocok dengan ==
- misalnya
null == undefinedtetapiundefined != false
- Ini juga layak disebutkan bahwa sementara
typeof nullpengembalian 'object', nulladalah bukan obyek, ini adalah bug lama / permainan kata-kata yang tidak tetap untuk mempertahankan kompatibilitas. Ini bukan objek yang benar, dan objek itu benar (kecuali untuk "pelanggaran yang disengaja" document.allketika Javascript diimplementasikan dalam HTML)
NaN tidak cocok dengan apa pun, dengan ==atau ===, bahkan tidak sendiri
- misalnya
NaN != NaN, NaN !== NaN, NaN != false,NaN != null
Dengan "kesetaraan ketat" ( ===), tidak ada pengelompokan seperti itu. Hanya false === false.
Ini adalah salah satu alasan mengapa banyak pengembang dan banyak panduan gaya (misalnya standardjs ) lebih suka ===dan hampir tidak pernah menggunakannya ==.
Nilai sebenarnya itu sebenarnya == false
"Truthy" berarti ToBooleanfungsi internal JavaScript kembali true. Sebuah kekhasan Javascript yang harus diperhatikan (dan alasan bagus lainnya untuk memilih ===lebih ==): adalah mungkin bagi suatu nilai untuk menjadi benar ( ToBooleankembali true), tetapi juga == false.
Anda mungkin berpikir if (value && value == false) alert('Huh?')adalah ketidakmungkinan logis yang tidak bisa terjadi, tetapi itu akan, untuk:
"0"dan '0'- mereka adalah string yang tidak kosong, yang benar, tetapi Javascript ==mencocokkan angka dengan string yang setara (misalnya 42 == "42"). Sejak 0 == false, jika "0" == 0, "0" == false.
new Number(0)dan new Boolean(false)- mereka objek, yang benar, tetapi ==melihat nilai-nilai mereka, yang == false.
0 .toExponential(); - objek dengan nilai numerik yang setara dengan 0
- Konstruksi serupa apa pun yang memberi Anda nilai penyetaraan salah yang dibungkus dengan jenis yang benar
[], [[]]dan [0](terima kasih cloudfeet untuk tautan Tabel Kesetaraan JavaScript )
Beberapa nilai lebih jujur
Ini hanya beberapa nilai yang mungkin diharapkan sebagian orang sebagai falsey, tetapi sebenarnya adalah kebenaran.
-1 dan semua angka negatif bukan nol
' ', " ", "false", 'null'... semua string yang tidak kosong, termasuk string yang hanya spasi
Apa pun dari typeof, yang selalu mengembalikan string yang tidak kosong, misalnya:
Objek apa pun (kecuali "pelanggaran yang disengaja" document.alldi browser; ingatlah bahwa nullitu sebenarnya bukan objek meskipun typeofmenyarankan sebaliknya). Termasuk:
{}
[]
function(){}atau () => {}(fungsi apa pun, termasuk fungsi kosong)
Error dan contoh dari Error
- Ekspresi reguler apa pun
- Apa pun yang dibuat dengan
new(termasuk new Number(0)dan new Boolean(false))
- setiap Symbol
true, 1, "1"Dan [1]kembali truebila dibandingkan dengan satu sama lain dengan ==.