2009-02-18 15 views
8

अगर मैं अभिव्यक्ति के परिणाम का परीक्षण करना चाहता हूं और फ़ंक्शन NaN वापस लौटाएगा तो मैं इसे कैसे देखूं?
उदाहरण:
$('amount').value.toInt()!='NaN'
^काम नहीं करता है और मैं मान लेते हैं कि दिए गए मान एक स्ट्रिंग नहीं है,
$('amount').value.toInt()!=NaN
^नहीं करता है या तो काम करने के लिए लग रहे हैं और यह एक लगता है स्पष्ट

तो मैं कैसे मान मौसम जाँच करते हैं एक संख्या नहीं है?जावास्क्रिप्ट में NaN के लिए आरक्षित कीवर्ड क्या है?

+0

यह आमतौर पर किसी भी प्रकार की पागलपन के लिए अपरिभाषित होता है। –

उत्तर

36

NaN मान को स्वयं सहित सभी चीज़ों के लिए असमान माना जाता है। परीक्षण करें कि isNaN() फ़ंक्शन के साथ कोई मान NaN है, उचित रूप से पर्याप्त है। (ECMAScript 6 गैर-संख्या तर्कों के लिए विभिन्न अर्थशास्त्र के साथ Number.isNan() फ़ंक्शन जोड़ता है, लेकिन यह 2015 तक अभी तक सभी ब्राउज़रों में समर्थित नहीं है)।

NaN मान के साथ दो अंतर्निहित गुण उपलब्ध हैं: वैश्विक NaN संपत्ति (यानी window.NaN ब्राउज़र में), और Number.NaN। यह एक भाषा कीवर्ड नहीं है। पुराने ब्राउज़र में, NaN संपत्ति संभावित रूप से भ्रमित परिणामों के साथ ओवरराइट की जा सकती है, लेकिन ECMAScript 5 standard it was made non-writable के साथ।

  • जैसा कि @ सोम ने टिप्पणियों में बताया, वैश्विक कार्य isFinite() भी उपयोगी हो सकता है।
+0

बहुत बहुत धन्यवाद :) वास्तव में आपकी मदद के लिए + 20rep – lock

+0

@lock, यह वोट के लिए 10 है और 15 स्वीकृति के लिए है, इसलिए यह 25 है (जब तक कि चीजें हाल ही में नहीं बदली गईं)। और यहाँ एक और 10 है, @ मील। – paxdiablo

+1

ओह क्षमा करें, गलत गणित, बहुत उपयोगी प्रोग्रामिंग समुदाय के लिए धन्यवाद – lock

1

समानता ऑपरेटर (== और ===) NaN के विरुद्ध मूल्य का परीक्षण करने के लिए उपयोग नहीं किया जा सकता है। इसके बजाय Number.isNaN() या isNaN() का उपयोग करें।

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

NaN के खिलाफ संख्यात्मक आपरेशन के परिणाम की जांच करने के लिए सबसे अच्छा तरीका इस तरह aproach के लिए, उदाहरण है:

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'); 
} 

और इसके पूर्ण हो जाने।

चाल कि NaN भी यह स्वयं के साथ किसी अन्य मूल्य की तुलना में नहीं किया जा सकता है (NaN! = NaN हमेशा सच है तो हम इस का लाभ लेने और तुलना करें खुद के खिलाफ परिणाम कर सकते हैं)

यह है जावास्क्रिप्ट (एक अच्छी और विचित्र भाषा)

संबंधित मुद्दे