2012-04-10 24 views
5

मैं कैसे जांच सकता हूं कि इनपुट मान NaN है या isNaN फ़ंक्शन का उपयोग किए बिना नहीं?यह कैसे बताने के लिए कि क्या एनएएनएन का उपयोग किए बिना मूल्य NaN है, जिसमें झूठी सकारात्मक है?

+1

तुम ऐसा क्यों की आवश्यकता होगी? इसके अलावा, यह बहुत अधिक है "मुझे कोडेज़ दें" मांग, इसलिए ... नहीं, हम मदद नहीं करेंगे। –

+8

मेरे पास एक स्क्रू है जिसे मुझे खराब करने की आवश्यकता है, लेकिन मैं एक स्क्रू ड्राइवर का उपयोग नहीं करना चाहता हूं। नहीं, मैं आपको नहीं बताऊंगा कि मैं एक स्क्रूड्राइवर का उपयोग क्यों नहीं करूंगा। मुझे बताओ, धन्यवाद। – asawyer

+0

क्या यह होमवर्क है? मैं किसी भी अन्य कारण के बारे में सोच नहीं सकता जिसे आप 'आईएनएनएएन' समारोह में भूमिका निभाना चाहते हैं। – JaredPar

उत्तर

7

आप ECMAScript 6 का उपयोग कर सकते हैं, तो आप Object.is है:

return Object.is(obj, NaN); 

अन्यथा, यहाँ, एक विकल्प है underscore.js के स्रोत कोड से: उस के लिए

// Is the given value `NaN`? 
_.isNaN = function(obj) { 
    // `NaN` is the only value for which `===` is not reflexive. 
    return obj !== obj; 
}; 

इसके अलावा उनकी टिप्पणी समारोह:

नोट: यह देशी isNaN फ़ंक्शन जैसा नहीं है, जो वैरिएबल अपरिभाषित होने पर भी सत्य वापस आ जाएगा।

+0

'isNaN ('0') === झूठा', जबकि' _.isNaN ('0') 'सत्य है। –

+0

'isNaN ('as')' 'सत्य 'है, लेकिन' _.isNaN (' as '' '' false' है। –

+0

@RobW क्या? यह प्रति कल्पना एक बग है। प्रतिलिपि केवल एक चीज जो सख्ती से बराबर नहीं है वह NaN है। – gsnedders

1

एक नंबर के लिए इनपुट कन्वर्ट, और जाँच करें कि क्या घटाव शून्य नहीं है:

var x = 'value'; 
var is_NaN = +x - x !== 0; // The + is actually not needed, but added to show 
          // that a number conversion is made. 
+0

'x = अनंतता' के बारे में क्या? – Kobi

+0

@ कोबी: 'इन्फिनिटी-इन्फिनिटी' 'NaN' है :-P –

+1

@ कोबी' एनएएनएन (इन्फिनिटी) 'रिटर्न' झूठा 'है, और मेरी विधि सच होती है। इन्फिनिटी एक [वास्तविक संख्या] नहीं है (https://secure.wikimedia.org/wikipedia/en/wiki/Real_number), इसलिए मेरा मानना ​​है कि मेरा कार्यान्वयन बेहतर है (मुझे विवाद करने के लिए स्वतंत्र महसूस करें)। –