Bir değişkenin değeri 1 ise number
, değişken ise başlangıçta null
veya değişkense değişkene 0 atarsa , rutin yazmak zorunda kaldım undefined
.
İlk uygulama, v >= 0 ? v += 1 : v = 0
bir sayı olmayan herhangi bir şeyin aritmetik bir ifadeyi yanlış yapacağını düşündüm, ancak doğru olarak null >= 0
değerlendirildiğinden yanlıştı . Sonra öğrendim ki null
0 gibi davranıyor ve aşağıdaki ifadelerin hepsi doğru olarak değerlendiriliyor.
null >= 0 && null <= 0
!(null < 0 || null > 0)
null + 1 === 1
1 / null === Infinity
Math.pow(42, null) === 1
Tabii ki, null
0 değil null == 0
yanlış olarak değerlendirilir. Bu görünüşte totolojik ifadeyi (v >= 0 && v <= 0) === (v == 0)
yanlış yapar .
null
Aslında 0 olmasa da neden 0 gibidir?
null
da şu sayaçları artırmak için gerçekten kısa bir yol var undefined
:c = -~c // Results in 1 for null/undefined; increments if already a number
undefined
başlatılmamış değişkenler için bir değişken değerdir. null
Öte yandan, boş bir nesne değeridir ve sayılarla karıştırılmamalıdır. null
sayılarla birleştirilmemelidir, bu nedenle null değerinin sayılar gibi davranması gerekmez.