JavaScript'teki Falsey değerleri
false
- Sıfır
Numbertürü: 0ve aynı zamanda -0, 0.0ve altıgen şekli 0x0( sayesinde MHK )
- Sıfır
BigInttürü: 0nve -0n(2020'de yeni, teşekkürler GetMeARemoteJob )
"", ''ve`` - uzunlukta şeritler 0
null
undefined
NaN
document.all (yalnızca HTML tarayıcılarda)
"Falsey", JavaScript'in dahili ToBooleanişlevinin geri döndüğü anlamına gelir false. ToBooleanaltta yatan !value, value ? ... : ...;ve if (value). İşte resmi belirtimi (2020 çalışma taslağı) ( 1997'deki ilk ECMAscript belirtiminden bu yana tek değişiklik , her zaman doğru olan ve yukarıda belirtilen ES6 Sembollerinin eklenmesidir BigInt:

==(Gevşek eşitlik) ile karşılaştırmalar
Falsy değerlerinin altta yatan farklılıklar nedeniyle bazı karışıklıklara neden olan ve kullanan gevşek karşılaştırmalar== hakkında konuşmaya değer ToNumber(). Etkili üç grup oluştururlar:
false, 0, -0, "", '' hepsi birbiriyle eşleşir ==
- örneğin
false == "", '' == 0dolayısıyla4/2 - 2 == 'some string'.slice(11);
null, undefined Uyuşuyor ==
- örneğin
null == undefinedamaundefined != false
- Bu süre olması da bahsetmemiz var
typeof nulldönüşleri 'object', nullolan bu uzun süredir devam eden hata / eksikliği olan bir nesne değil uyumluluğu sağlamak amacıyla sabit değildi. Bu gerçek bir nesne değildir ve nesneler doğrudur ( document.allJavascript HTML'de uygulandığında "kasıtlı ihlal" dışında )
NaN hiçbir şeyle uyuşmuyor == veya ===hatta kendisi
- örneğin
NaN != NaN, NaN !== NaN, NaN != false,NaN != null
"Katı eşitlik" ( ===) ile böyle bir gruplaşma yoktur. Sadecefalse === false .
Bu, birçok geliştiricinin ve birçok stil kılavuzunun (örn. Standardjs ) tercih etmesinin nedenlerinden biridir.=== ve neredeyse hiç kullanılmamasının== .
Aslında gerçek değerler == false
"Gerçek" basitçe JavaScript'in dahili ToBooleanişlevinin geri döndüğü anlamına gelir true. Javascript bir cilvesi farkında olmak (ve tercih için başka bir sebep ===üzerine ==): Bir değer truthy olmak için bu mümkün ( ToBooleandönertrue de) ancak == false.
Düşünebilirsin if (value && value == false) alert('Huh?') için, asla olamazdı mantıksal olarak imkansızdır, ama olacak:
"0"ve '0'- bunlar doğru olmayan boş dizelerdir, ancak Javascript'in ==sayıları eşdeğer dizelerle eşleştirir (örn. 42 == "42"). Çünkü 0 == false, eğer "0" == 0 , "0" == false.
new Number(0)ve new Boolean(false)- onlar doğru olan nesnelerdir, ama== değerlerini gören== false .
0 .toExponential(); - sayısal değere eşit bir nesne 0
- Size doğru olan bir türle sarılmış yanlış eşitlik değeri veren benzer yapılar
[], [[]]Ve [0](teşekkürler cloudfeet için JavaScript Eşitlik Masa bağlantı )
Biraz daha doğru değerler
Bunlar, bazı insanların sahtekar olmasını bekleyebilecekleri birkaç değerdir, ancak aslında doğrudur.
-1 ve sıfır olmayan tüm negatif sayılar
' ', " ", "false", 'null'... hepsi sadece boşluk vardır dizeleri dahil olmayan boş dizeler,
Her typeofzaman boş olmayan bir dize döndüren herhangi bir şey, örneğin:
Herhangi bir nesne ( document.alltarayıcılarda "kasıtlı ihlal" dışında ; aksi belirtilmedikçe nullbunun gerçekten bir nesne olmadığını unutmayın typeof). Dahil olmak üzere:
{}
[]
function(){}veya () => {}(boş işlevler dahil olmak üzere herhangi bir işlev)
Error ve herhangi bir örneği Error
- Herhangi bir düzenli ifade
- İle oluşturulan herhangi bir şey
new( new Number(0)ve dahil new Boolean(false))
- Herhangi Bir Sembol
true, 1, "1"Ve [1]geri dönüş truebirbirlerine göre ==.