2009-02-18 19 views
8

Bir ifadenin sonucunu test etmek istiyorsam ve işlev NaN 'u iade ederse bunu nasıl kontrol ederim?
örnekler:
$('amount').value.toInt()!='NaN'
^çalışmıyor ve ben döndürülen değer bir dize değil varsayalım,
$('amount').value.toInt()!=NaN
^doesnt ya çalışmıyor gibi görünüyor ve bu bir i döndürülen değerin Hava kontrol nasıl çok açık

görünüyor bir sayı değil mi?javascript'te NaN için ayrılmış anahtar kelime nedir?

+0

Genellikle herhangi bir çılgınlık türü için tanımsız olarak atar. –

cevap

36

NaN değerinin, kendisi de dahil olmak üzere her şey için eşit olmadığı tanımlanmıştır. isNaN() işleviyle bir değer NaN değerinin yeterli olup olmadığını sınayın. (ECMAScript 6, numarasız argümanlar için farklı semantiklerle Number.isNan() işlevini ekler, ancak 2015 itibariyle tüm tarayıcılarda desteklenmez).

NaN değerine sahip iki yerleşik özellik vardır: genel NaN özelliği (ör. Tarayıcılarda window.NaN) ve Number.NaN. Bir dil anahtar kelimesi değil 'dır. Eski tarayıcılarda, NaN özelliğinin üzerine yazılması olası olabilir, ancak sonuç olarak kafa karıştırıcı sonuçlar elde edilebilir, ancak ECMAScript 5 standard it was made non-writable. @some Açıklamalarda belirttiği gibi

  • da yararlı olabilir küresel işlev isFinite() yoktur.
+0

çok teşekkürler :) gerçekten sizin için + 20rep yardımcı oldu – lock

+0

@lock, bir oy için 15 ve bir kabul için 15, yani bu 25 (son zamanlarda işler değişmediyse). Ve işte başka 10, @Miles. – paxdiablo

+1

ohw üzgünüm, yanlış matematik, çok yararlı programlama topluluğuna tekrar teşekkürler – lock

1

Eşitlik operatörü (== ve ===), NaN'ye karşı bir değeri sınamak için kullanılamaz. Bunun yerine Number.isNaN() veya isNaN() kullanın.

NaN === NaN;  // false 
Number.NaN === NaN; // false 
isNaN(NaN);   // true 
isNaN(Number.NaN); // true 
2

NaN karşı sayısal işlemin sonucunu kontrol etmenin en iyi yolu, örneği bu şekilde Yaklaşımına geçerli:

var x = 0; 
var y = 0; 
var result = x/y; // we know that result will be NaN value 
// to test if result holds a NaN value we should use the following code : 

if(result !=result){ 
console.log('this is an NaN value'); 
} 

ve bitti.

hüner NaN bile kendini başka herhangi değerine kıyasla edilemez olduğunu

şudur (biz kendisine karşı neden bu yararlanmak ve karşılaştırabilirsiniz böylece NaN! = NaN daima doğrudur) JavaScript (iyi ve tuhaf bir dil)