Bir değişkenin değeri 1 ise number, değişken ise başlangıçta nullveya değişkense değişkene 0 atarsa , rutin yazmak zorunda kaldım undefined.
İlk uygulama, v >= 0 ? v += 1 : v = 0bir sayı olmayan herhangi bir şeyin aritmetik bir ifadeyi yanlış yapacağını düşündüm, ancak doğru olarak null >= 0değerlendirildiğinden yanlıştı . Sonra öğrendim ki null0 gibi davranıyor ve aşağıdaki ifadelerin hepsi doğru olarak değerlendiriliyor.
null >= 0 && null <= 0!(null < 0 || null > 0)null + 1 === 11 / null === InfinityMath.pow(42, null) === 1
Tabii ki, null0 değil null == 0yanlış olarak değerlendirilir. Bu görünüşte totolojik ifadeyi (v >= 0 && v <= 0) === (v == 0)yanlış yapar .
nullAslında 0 olmasa da neden 0 gibidir?
nullda ş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
undefinedbaş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. nullsayılarla birleştirilmemelidir, bu nedenle null değerinin sayılar gibi davranması gerekmez.