Neden boş >= 0 && null <= 0` ama ` = = 0`null değil mi?
Kaldım yazmak için rutin aralıklarla değer bir değişken tarafından 1 türü number
ve atar 0 değişken değilse, nerede bu değişken başlangıçta null
undefined
.
İlk uygulama bir sayıyı aritmetik bir ifade yanlış olmaz hiçbir şey düşündüğüm için v >= 0 ? v = 1 : v = 0
ama null >= 0
true olarak değerlendirilir beri yanlıştı. Sonra null
0 gibi davranır öğrendim ve aşağıdaki ifadeleri doğru olarak değerlendirilir.
null >= 0 && null <= 0
!(null < 0 || null > 0)
null 1 === 1
1 / null === Infinity
Math.pow(42, null) === 1
Tabii ki, null
0. null == 0
yanlış olarak değerlendirilir. Bu görünüşte tautological ifade (v >= 0 && v <= 0) === (v == 0)
yanlış yapar.
Neden aslında 0 olmasa da 0, 17**?
CEVAP
Gerçek soru gibi görünüyor:
Neden:
null >= 0; // true
Ama:
null == 0; // false
Gerçekte olan şey buDaha büyük-daha-veya-eşit Operatörü(>=
), gerçekleştirir tür zorlama (ToPrimitive
), biripucuNumber
aslında tüm ilgili operatörler, bu tür bir davranışı var.
The Abstract Relational Comparison Algorithm bu sürecin iç detayları görebilirsiniz.
null
tarafından özel bir şekilde tedavi edilirOperatör Eşittir(==
). Kısa sadecekullanmaya zorlar25**:
null == null; // true
null == undefined; // true
false
, ''
, '0'
, ve []
gibi değer sayısal tür zorlama tabi, hepsi sıfır koşuyorlar.
The Abstract Equality Comparison Algorithm bu sürecin iç detayları görebilirsiniz.
Neden varsayılan olarak't işaretç...
Neden boş >= 0 && null <= 0` ama...
Neden ve'boş ve tanımsız arasında...
Neden Java null atabilir miyim?...
Fıkra DEĞİL ve NULL değerleri...