Javascript

Anlam Ayrımı Bulunmuyor.

2016 yılında @biliyon tarafından açılan bu başlık 8 entry ile zenginleşti ve 401 defa ziyaret edildi.

2 dakikada okunabilir.
NaN isimli bir sabite sahiptir. Ancak bu sabit kendisi de dahil hiç bir şey ile eşit veya denk değildir. Bu değeri herhangi bir şey ile karşılaştırmadan bir mantıksal sınama yordamına sokarsanız JavaScript otomatik olarak bunu gördüğü yere false koyup yoluna devam edecektir. Tek işe yarar bir şey sağladığı durum budur.

if<bkz type="short" space=""> ! parseInt( 'abc', 10 </bkz>) // sayı girilmediği için NaN değer döner // False olarak ele alınır, ! ile bunun tersi true elde edilir if match olur aşağıdaki satır çalışır console.log<bkz type="short" space="">'not a number'</bkz>

Buradaki mantık aslında basittir. NaN, not a number ifadesinin kısa yazılmış halidir. Yani kümesel düşünürsek sayılar hariç diğer her şeyi kapsayan geniş bir tür havuzunu temsil eder. Yani NaN bir function da olabilir, bir string de olabilir. Bunların hepsi olabileceği için sadece string de diyemeyiz sadece array de diyemeyiz çünkü hepsidir ama tek tek hiçbiridir.

Burada haklı olarak neden kendisine eşit olmadığını sorabilirsiniz. Kendisine de eşit değildir çünkü kendisi de bir türdür ve tek tek türlerle eşleşmez demiştik zaten. Bunun yerine NaN spesifik bir türü değil bir türler kümesini temsil ettiği için kendisiyle eşleşmez de diyebiliriz. Her iki türlü de kendisiyle eşleşmemesini mantıklı biçimde açıklamak mümkün.

JSON.Stringify bunu gördüğünde null olarak dönüştürür.