क्यों नहीं हैNNN ("") (रिक्त स्थान के साथ स्ट्रिंग) समान झूठ?


160

जावास्क्रिप्ट में, isNaN(" ")मूल्यांकन क्यों करता है false, लेकिन isNaN(" x")मूल्यांकन करने के लिए true?

मैं एक पाठ इनपुट मैदान पर संख्यात्मक ऑपरेशनों को कर रहा हूँ, और अगर क्षेत्र है मैं जाँच कर रहा हूँ null, "", या NaN। जब कोई क्षेत्र में एक मुट्ठी भर रिक्त स्थान टाइप करता है, तो मेरा सत्यापन तीनों पर विफल हो जाता है, और मैं उलझन में हूं कि यह isNaNचेक से क्यों अतीत में जाता है ।


1
हम्म ... निश्चित रूप से इस विषय का अन्य आधा भाग नहीं गया। यह पढ़ने के लिए माना जाता है, "जावास्क्रिप्ट: Why isNaN (" ") का मूल्यांकन गलत है?"
आईवीआर एवेंजर

जेस, यह व्यवहार (खाली या स्थान isNaN के लिए गलत है), लेकिन मुझे इस फ़ंक्शन का सटीक चश्मा नहीं मिला।
ल्यूकोरो

यहाँ एक सवाल है जो इसका उत्तर देता है: http://stackoverflow.com/questions/115548/why-is-isnannull-false-in-js
Lucero

इन मुद्दों पर जावास्क्रिप्ट वूडू की तरह लगता है! आप कभी नहीं जानते हैं और स्पष्टीकरण हमेशा काफी जटिल है। "" == false // trueऔरisNaN(" ") // false
जोआओ पिमेंटेल फेरेरा

जवाबों:


155

जावास्क्रिप्ट एक रिक्त स्ट्रिंग को 0 के रूप में व्याख्या करता है, जो तब isan परीक्षण को विफल करता है। आप स्ट्रिंग पर parseInt का उपयोग कर सकते हैं जो पहले खाली स्ट्रिंग को 0. में परिवर्तित नहीं करेगा। परिणाम तब असफल होना चाहिए।


53
लेकिन parseInt ("123abcd") 123 लौटाता है, जिसका अर्थ है isNaN (parseInt ("123abcd")) गलत है, जबकि यह सच लौटना चाहिए!
पवन नोगरिया

11
तो कैसे (IsNaN (स्ट्रिंग) || isNaN (parseInt (स्ट्रिंग))) के बारे में
मैट

5
व्याख्या करने में 2 चरण हैं isNaN(arg)। 1) संख्या में आर्ग कन्वर्ट, 2) जाँच करें कि क्या संख्या संख्यात्मक मान है NaN। इससे मुझे बेहतर तरीके से समझने में मदद मिली।
xdhmoore

3
@Antonio_Haley एक मिनट प्रतीक्षा करें, मुझे यह नहीं मिला। यदि "जावास्क्रिप्ट 0 के रूप में एक खाली स्ट्रिंग की व्याख्या करता है, तो पार्सइंट (" ") NaN क्यों नहीं लौटाता है?
जीन-फ्रांकोइस ब्यूचैम्प

1
@ जीन-फ्रांस्वा यू आर राइट, अधिक सही कथन होगा "एनएनएएन 0 के रूप में एक खाली स्ट्रिंग की व्याख्या करता है", जावास्क्रिप्ट ही नहीं।
एंटोनियो हैली

82

आपको यह आश्चर्यजनक लग सकता है या शायद नहीं, लेकिन जावास्क्रिप्ट इंजन की खराबी को दिखाने के लिए यहां कुछ परीक्षण कोड दिए गए हैं।

document.write(isNaN("")) // false
document.write(isNaN(" "))  // false
document.write(isNaN(0))  // false
document.write(isNaN(null)) // false
document.write(isNaN(false))  // false
document.write("" == false)  // true
document.write("" == 0)  // true
document.write(" " == 0)  // true
document.write(" " == false)  // true
document.write(0 == false) // true
document.write(" " == "") // false

तो इसका मतलब है कि

" " == 0 == false

तथा

"" == 0 == false

परंतु

"" != " "

मज़े करो :)


5
+1 महान पोस्ट। क्या आप जोड़ सकते हैं कि ट्रिपल बराबर (=== और! ==) ऑपरेटर यहाँ कैसे फिट होता है?
बेन्डेवी

2
आपको NaN === NaN या NaN == NaN ;-) की कोशिश करनी चाहिए; मुझे नहीं पता कि यह सब मतलब है कि जावास्क्रिप्ट इंजन निराला है या फिर जावास्क्रिप्ट, निराला प्रोग्रामर के लिए खराब है।
KooiInc

10
@Kooilnc तथ्य यह है कि NaN! = NaN, वास्तव में, एक बार के लिए एक अच्छा विकल्प है। विचार यह है कि NaN लगभग हमेशा एक संगणना का परिणाम होता है जो प्रोग्रामर के इरादे से भिन्न होता है, और यह मानने के लिए कि "गलत" गए दो संगणनाओं के परिणाम काफी खतरनाक हैं, मैं कहूंगा।
स्क्रेबेल

2
@Kililc जावास्क्रिप्ट के निराकरण से थोड़ा भी दूर नहीं ले जाने के लिए, लेकिन ये NaN सिर्फ IEEE 754 फ़्लोटिंग पॉइंट मानक का पालन कर रहे हैं। आप सभी के बारे में हमेशा की तरह बड़े डब्ल्यू पर पढ़ सकते हैं: en.wikipedia.org/wiki/NaN
Spike0xff

@NickBerardi F'ing LOL! मुझे बहुत खुशी है कि मैंने इस पोस्ट को देखा। मुझे यह पता लगाने में मदद की कि isnan फ़ंक्शन इतना मंद क्यों है। मैं इसे अभी अपने पूर्ण-विकसित कोड से नहीं छीनूंगा, और संभवत: इसका उपयोग फिर कभी नहीं करूंगा। मैं के लिए मान्य होगा null, ""है, और " "अपने आप को। धन्यवाद!
वोयडकिंग

16

इसे बेहतर ढंग से समझने के लिए, कृपया पेज 43 पर "एक्न -स्क्रिप्ट एप्लाइड टू द स्ट्रिंग टाइप" के लिए एक्मा-स्क्रिप्ट युक्ति को खोलें।

यदि एक स्ट्रिंग में एक संख्यात्मक सिंटैक्स होता है, जिसमें किसी भी संख्या में श्वेत-स्थान वर्ण हो सकते हैं, तो इसे संख्या प्रकार में परिवर्तित किया जा सकता है। खाली स्ट्रिंग 0. का मूल्यांकन करता है। इसके अलावा स्ट्रिंग 'इन्फिनिटी' को देना चाहिए

isNaN('Infinity'); // false

13

प्रयोग करके देखें:

alert(isNaN(parseInt("   ")));

या

alert(isNaN(parseFloat("    ")));

3
हाय सर, isNaN (parseInt ("123a")): 123 लौटेगा तो उर सॉल्यूशन काम नहीं करेगा, अगर स्ट्रिंग में aplha संख्यात्मक हो तो
सज्जाद अली खान

6

MDNसमस्या के कारण से आप सामना कर रहे हैं

जब isNaN फ़ंक्शन का तर्क टाइप नंबर का नहीं है, तो मान पहले किसी संख्या के लिए ज़ब्त किया जाता है। परिणामी मूल्य तब निर्धारित किया जाता है कि यह NaN है या नहीं।

आप निम्नलिखित व्यापक उत्तर की जांच करना चाहते हैं जो समानता के लिए NaN तुलना को भी कवर करता है।

यदि जावास्क्रिप्ट चर है तो परीक्षण कैसे करें NaN


5

मुझे लगता है कि यह जावास्क्रिप्ट टाइपिंग के कारण है: ' 'शून्य में परिवर्तित हो जाता है, जबकि 'x'नहीं:

alert(' ' * 1); // 0
alert('x' * 1); // NaN

4

यदि आप एक सटीक इनेमल फ़ंक्शन को लागू करना चाहते हैं, तो यहां जावास्क्रिप्ट से यह करने का एक तरीका है : अच्छा भाग डगलस क्रॉकफ़ोर्ड द्वारा [पृष्ठ 105]

var isNumber = function isNumber(value) {
   return typeof value === 'number' && 
   isFinite(value);
}

4
@Xyan जिस स्थिति में यह कार्य ओपी करने के लिए कहे जाने वाले कार्य को करने के लिए बहुत मददगार नहीं है, जो कि एक संख्या के एक स्ट्रिंग प्रतिनिधित्व का निरीक्षण करना था ...
ErikE

"नंबर" जैसे एक स्ट्रिंग शाब्दिक के खिलाफ किसी भी दिए गए मूल्य के तथाकथित सख्त समानता ऑपरेटर का उपयोग करना बेवकूफी है,
बेकिम बकाज

4

नहीं-पूरी तरह से सही जवाब

एंटोनियो हेली का यहाँ बहुत उत्थान और स्वीकार किया गया उत्तर गलत धारणा बनाता है कि यह प्रक्रिया जावास्क्रिप्ट parseIntफ़ंक्शन के माध्यम से जाती है:

आप स्ट्रिंग पर parseInt का उपयोग कर सकते हैं ... परिणाम तब विफल होना चाहिए।

हम इस कथन को स्ट्रिंग के साथ आसानी से अस्वीकृत कर सकते हैं "123abc":

parseInt("123abc")    // 123     (a number...
isNaN("123abc")       // true     ...which is not a number)

इसके साथ, हम देख सकते हैं कि जावास्क्रिप्ट का parseIntफ़ंक्शन "123abc"संख्या के रूप में वापस आता है 123, फिर भी इसका isNaNकार्य हमें बताता है कि संख्या "123abc" नहीं है।

सही जबाव

ECMAScript-262 परिभाषित करता है कि isNaNचेक 18.2.3 सेक्शन में कैसे काम करता है ।

18.2.3 isNaN (संख्या)

isNaNसमारोह है %isNaN%आंतरिक वस्तु। जब isNaNफ़ंक्शन को एक तर्क संख्या के साथ बुलाया जाता है, तो निम्नलिखित कदम उठाए जाते हैं:

  1. रहने दो num?ToNumber(number)
  2. अगर numहै NaN, तो लौटेंtrue
  3. नहीं तो लौटो false

ToNumberसमारोह में यह संदर्भ भी परिभाषित किया गया है ECMAScript-262 के खंड 7.1.3 । यहाँ पर, हमें बताया गया है कि कैसे जावास्क्रिप्ट स्ट्रिंग्स को संभालता है जो इस फंक्शन में पास हो जाते हैं।

प्रश्न में दिया गया पहला उदाहरण एक स्ट्रिंग है जिसमें सफेद अंतरिक्ष वर्णों के अलावा कुछ भी नहीं है। यह खंड बताता है कि:

एक StringNumericLiteralहै कि खाली है या केवल सफेद स्थान शामिल हैं में बदल जाती है +0

" "उदाहरण स्ट्रिंग इसलिए में बदल जाती है +0, जो एक संख्या है।

एक ही अनुभाग यह भी बताता है:

यदि व्याकरण के Stringविस्तार के रूप में व्याख्या नहीं कर सकता है StringNumericLiteral, तो इसका परिणाम ToNumberहै NaN

उस खंड में निहित सभी जांचों को उद्धृत किए बिना, " x"प्रश्न में दिया गया उदाहरण उपरोक्त स्थिति में आता है क्योंकि इसकी व्याख्या नहीं की जा सकती है StringNumericLiteral" x"इसलिए परिवर्तित किया जाता है NaN


2

मुझे यकीन नहीं है कि क्यों , लेकिन समस्या के आसपास पाने के लिए आप हमेशा जांच से पहले व्हॉट्सएप ट्रिम कर सकते हैं। आप शायद वैसे भी करना चाहते हैं।


4
एक छंटनी की गई खाली स्ट्रिंग भी विफल रहती है NNN परीक्षण।
एग्मेंक

2

फ़ंक्शन isNaN("")एक स्ट्रिंग से लेकर संख्या प्रकार के जबरदस्ती करता है

ECMAScript 3-5 टाइपो ऑपरेटर के लिए निम्नलिखित रिटर्न मानों को परिभाषित करता है:

  • अपरिभाषित
  • ऑब्जेक्ट (अशक्त, ऑब्जेक्ट, सरणियाँ)
  • बूलियन
  • संख्या
  • तार
  • समारोह

फ़ंक्शन बॉडी में हमारे परीक्षण को लपेटने के लिए बेहतर है:

function isNumber (s) {
    return typeof s == 'number'? true
           : typeof s == 'string'? (s.trim() === ''? false : !isNaN(s))
           : (typeof s).match(/object|function/)? false
           : !isNaN(s)
}

यह फ़ंक्शन वैरिएबल प्रकार का परीक्षण करने का इरादा नहीं है , इसके बजाय यह coerced मान का परीक्षण करता है । उदाहरण के लिए, बूलियन और स्ट्रिंग्स को संख्याओं के लिए मजबूर किया जाता है, इसलिए शायद आप इस फ़ंक्शन को कॉल करना चाहेंisNumberCoerced()

यदि स्ट्रिंग और संख्या के अलावा अन्य प्रकारों के लिए परीक्षण करने की कोई आवश्यकता नहीं है , तो निम्नलिखित स्निपेट को कुछ शर्त के हिस्से के रूप में उपयोग किया जा सकता है:

if (!isNaN(s) && s.toString().trim()!='') // 's' can be boolean, number or string
    alert("s is a number")

1

मैं आपको निम्नलिखित फ़ंक्शन का उपयोग करने का सुझाव देता हूं यदि आप वास्तव में एक उचित जांच चाहते हैं कि क्या यह पूर्णांक है:

function isInteger(s)
{
   return Math.ceil(s) == Math.floor(s);
}

1

यह isNaN(" ")असत्य के भ्रमित व्यवहार का हिस्सा हैisNaN गैर-संख्याओं के एक संख्यात्मक प्रकार के साथ जबरदस्ती के कारण वैश्विक कार्य ।

से MDN :

isNaNफ़ंक्शन विनिर्देश के बहुत शुरुआती संस्करणों के बाद से , गैर-संख्यात्मक तर्कों के लिए इसका व्यवहार भ्रामक रहा है। जब isNaNफ़ंक्शन का तर्क टाइप नंबर का नहीं होता है, तो मान पहले एक संख्या के लिए बाध्य होता है। परिणामी मूल्य को यह निर्धारित करने के लिए परीक्षण किया जाता है कि क्या यह है NaN। इस प्रकार गैर-संख्याओं के लिए जब संख्यात्मक प्रकार के परिणाम के लिए एक वैध गैर-NaN संख्यात्मक मान (विशेष रूप से खाली स्ट्रिंग और बूलियन प्राइमेटरीज, जो जब coerced संख्यात्मक मान शून्य या एक देते हैं) के लिए मजबूर किया जाता है, तो "गलत" लौटा मूल्य अप्रत्याशित हो सकता है; खाली स्ट्रिंग, उदाहरण के लिए, निश्चित रूप से "एक संख्या नहीं है।"

ध्यान दें कि ECMAScript 6 के साथ, अब Number.isNaNविधि भी है , जो MDN के अनुसार है:

वैश्विक isNaN()फ़ंक्शन की तुलना में , Number.isNaN()पैरामीटर को एक संख्या में परिवर्तित करने की समस्या से ग्रस्त नहीं होता है। इसका मतलब यह है कि मूल्यों को पारित करना अब सुरक्षित है जो सामान्य रूप से परिवर्तित हो जाएगा NaN, लेकिन वास्तव में इसके समान मूल्य नहीं हैं NaN। इसका मतलब यह भी है कि केवल टाइप संख्या के मान, जो भी हैं NaN, लौटते हैं true

दुर्भाग्य से :

यहां तक ​​कि ECMAScript 6 Number.isNaNपद्धति के अपने मुद्दे हैं, जैसा कि ब्लॉग पोस्ट में उल्लिखित है - बदसूरत जावास्क्रिप्ट और ईएस 6 एनएन समस्या को ठीक करना


1

isNaNसमारोह, एक अपने तर्क के रूप में संख्या की उम्मीद है तो किसी भी अन्य प्रकार (अपने मामले में एक स्ट्रिंग) के तर्कों संख्या में परिवर्तित हो जाएगा से पहले वास्तविक समारोह तर्क किया जाता है। (ध्यान रखें कि NaNप्रकार संख्या का एक मूल्य भी है!)

Btw। यह सभी अंतर्निहित कार्यों के लिए सामान्य है - यदि वे एक निश्चित प्रकार के तर्क की अपेक्षा करते हैं, तो वास्तविक तर्क को मानक रूपांतरण कार्यों का उपयोग करके परिवर्तित किया जाएगा। सभी मूल प्रकारों (बूल, स्ट्रिंग, संख्या, ऑब्जेक्ट, दिनांक, अशक्त, अपरिभाषित) के बीच मानक रूपांतरण हैं।

के लिए मानक रूपांतरण Stringको Numberस्पष्ट रूप से लागू किया जा सकता है Number()। तो हम देख सकते हैं कि:

  • Number(" ") का मूल्यांकन करता है 0
  • Number(" x") का मूल्यांकन करता है NaN

इसे देखते हुए, isNaNफ़ंक्शन का परिणाम पूरी तरह से तार्किक है!

असली सवाल यह है कि मानक स्ट्रिंग-टू-नंबर रूपांतरण क्यों काम करता है। स्ट्रिंग-टू-नंबर रूपांतरण वास्तव में "123" या "17.5e4" जैसे संख्यात्मक स्ट्रिंग्स को समतुल्य संख्याओं में बदलने का इरादा है। रूपांतरण पहले प्रारंभिक व्हाट्सएप को बंद कर देता है (इसलिए "123" वैध है) और फिर नंबर के रूप में टिकी हुई चीजों को पार्स करने की कोशिश करता है। यदि यह एक संख्या के रूप में पारगम्य नहीं है ("x" नहीं है) तो परिणाम NaN है। लेकिन स्पष्ट विशेष नियम है कि एक स्ट्रिंग जो खाली है या केवल व्हाट्सएप को 0. में बदल दिया गया है, इसलिए यह रूपांतरण की व्याख्या करता है।

संदर्भ: http://www.ecma-international.org/ecma-262/5.1/#sec-9.3.1


1

मैंने इस समस्या को हल करने में मदद करने के लिए यह त्वरित छोटा कार्य लिखा।

function isNumber(val) {
     return (val != undefined && val != null && val.toString().length > 0 && val.toString().match(/[^0-9\.\-]/g) == null);
};

यह बस किसी भी वर्ण के लिए जाँच करता है जो कि संख्यात्मक (0-9) नहीं हैं, जो '-' या 'नहीं हैं।' :)


इसके लिए एक आभारी धन्यवाद; इससे मेरी समस्या बहुत अच्छी तरह से हल हो गई।
हेनरी

1

जैसा कि अन्य ने समझाया है कि isNaNफ़ंक्शन इसे सत्यापित करने से पहले खाली स्ट्रिंग को एक संख्या में ले जाएगा, इस प्रकार रिक्त स्ट्रिंग को 0 में बदल देगा (जो एक मान्य संख्या है)। हालांकि, मैंने पाया कि केवल रिक्त स्थान या स्ट्रिंग के साथ केवल रिक्त स्थान को पार्स करने की कोशिश करने parseIntपर फ़ंक्शन वापस आ जाएगा NaN। जैसा कि निम्नलिखित संयोजन अच्छी तरह से काम करता है:

if ( isNaN(string) || isNaN(parseInt(string)) ) console.log('Not a number!');

यह चेक पॉजिटिव नंबर्स, नेगेटिव नंबर्स और नंबरों के लिए दशमलव बिंदु के साथ काम करेगा, इसलिए मेरा मानना ​​है कि यह सभी सामान्य संख्यात्मक मामलों को कवर करता है।


1

NaN ! == "संख्या नहीं"

NaN संख्या प्रकार का एक मान है

यह ECMAScript में isNaN () की परिभाषा है

1. Let num be ToNumber(number).
2. ReturnIfAbrupt(num).
3. If num is NaN, return true.
4. Otherwise, return false.

किसी भी मान को संख्या में बदलने का प्रयास करें।

Number(" ") // 0
Number("x") // NaN
Number(null) // 0

यदि आप यह निर्धारित करना चाहते हैं कि क्या मान है NaN, तो आपको इसे पहले नंबर मान में बदलने की कोशिश करनी चाहिए।


0

यह फ़ंक्शन मेरे परीक्षणों में काम करने के लिए लग रहा था

function isNumber(s) {
    if (s === "" || s === null) {
        return false;
    } else {
        var number = parseInt(s);
        if (number == 'NaN') {
            return false;
        } else {
            return true;
        }
    }
}

2
आपके पूरे कार्य को लिखा जा सकता है:return !(s === "" || s === null || parseInt(s) == 'NaN');
ErikE


0

जावास्क्रिप्ट में निर्मित isNaN समारोह, है - के रूप में डिफ़ॉल्ट रूप से उम्मीद की जानी चाहिए - एक "गतिशील प्रकार ऑपरेटर"। इसलिए सभी मान जो (डीटीसी प्रक्रिया के दौरान) एक साधारण सच हो सकते हैं | जैसे झूठ"", " ", " 000" , NaN नहीं हो सकता।

मतलब यह है कि आपूर्ति की गई तर्क पहले एक रूपांतरण से गुजरेंगे :

function isNaNDemo(arg){
   var x = new Number(arg).valueOf();
   return x != x;
}

स्पष्टीकरण:

फ़ंक्शन बॉडी की शीर्ष पंक्ति में, हम तर्क को एक नंबर ऑब्जेक्ट में सफलतापूर्वक परिवर्तित करने की कोशिश कर रहे हैं। और (द्वितीय), डॉट ऑपरेटर हम कर रहे हैं का उपयोग कर - अपने स्वयं के सुविधा के लिए - तुरंत बंद अलग करना, आदिम मूल्य बनाई गई वस्तु की।

दूसरी पंक्ति में, हम पिछले चरण में प्राप्त मूल्य ले रहे हैं, और इस तथ्य का लाभ है कि NaN ब्रह्मांड में किसी भी चीज के बराबर नहीं है, यहां तक ​​कि खुद के लिए भी नहीं है, उदाहरण के लिए: NaN == NaN >> falseअंत में खुद के साथ इसकी (असमानता) तुलना करने के लिए ।

इस तरह से फ़ंक्शन रिटर्न तभी सही होगा , जब और केवल तभी, आपूर्ति की गई तर्क-वापसी, किसी ऑब्जेक्ट के लिए रूपांतरण का एक असफल प्रयास है, अर्थात, एक नंबर-एक नंबर; जैसे, NaN।


isNNstatic ()

हालांकि, एक स्टेटिक टाइप ऑपरेटर के लिए - यदि आवश्यक हो और जब जरूरत हो - हम एक बहुत सरल कार्य लिख सकते हैं जैसे:

function isNaNstatic(x){   
   return x != x;
}

और डीटीसी से पूरी तरह से बचें ताकि यदि तर्क स्पष्ट रूप से एक NaN नंबर नहीं है, तो यह गलत वापस आ जाएगा। निम्नलिखित में, निम्नलिखित के खिलाफ परीक्षण:

isNaNStatic(" x"); // will return false क्योंकि यह अभी भी एक स्ट्रिंग है।

हालांकि: isNaNStatic(1/"x"); // will of course return true.उदाहरण के लिए होगाisNaNStatic(NaN); >> true

लेकिन इसके विपरीत isNaN, isNaNStatic("NaN"); >> falseक्योंकि यह (तर्क) एक साधारण स्ट्रिंग है।

ps: isNaN का स्थिर संस्करण आधुनिक कोडिंग परिदृश्यों में बहुत उपयोगी हो सकता है। और यह बहुत अच्छी तरह से एक मुख्य कारण हो सकता है जो मैंने इसे पोस्ट करने के लिए अपना समय लिया।

सादर।


0

isNAN(<argument>)यह बताने का एक कार्य है कि क्या दिया गया तर्क अवैध संख्या है। isNaNसंख्या प्रकार में तर्कों को टाइपकास्ट करें। यदि आप जांचना चाहते हैं कि क्या तर्क न्यूमेरिक है या नहीं? कृपया $.isNumeric()jQuery में फ़ंक्शन का उपयोग करें ।

यही है, isNaN (foo) isNaN (संख्या (foo)) के बराबर है। यह स्पष्ट कारणों के लिए संख्या के रूप में सभी अंकों वाले किसी भी तार को स्वीकार करता है। पूर्व के लिए।

isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN('123') //false
isNaN('Hello') //true
isNaN('2005/12/12') //true
isNaN('') //false
isNaN(true) //false
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true

0

मैं इसका उपयोग करता हूं

    function isNotANumeric(val) {
    	if(val.trim && val.trim() == "") {
         return true;
      } else {
      	 return isNaN(parseFloat(val * 1));
      }
    }
    
    alert(isNotANumeric("100"));  // false
    alert(isNotANumeric("1a"));   // true
    alert(isNotANumeric(""));     // true
    alert(isNotANumeric("   "));  // true


0

जब सफेद स्थान के साथ करता है, तो निश्चित स्ट्रिंग मान की जाँच या " "है isNaNशायद स्ट्रिंग सत्यापन प्रदर्शन करने के लिए प्रयास करते हैं, उदाहरण के लिए:

// value = "123 " if (value.match(/\s/) || isNaN(value)) { // do something }

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.