2011-11-25 24 views
16

कुछ अजीब बात है।isNaN() बनाम parseInt() भ्रम

क्यों
isNaN("") साथ मैं False
लेकिन parseInt("") मैं NaN
साथ
मिल सकता है?

+2

http://stackoverflow.com/questions/825402/why-does-isnan-equal-false –

+0

का संभावित डुप्लिकेट क्योंकि 'isNaN'' parseInt' का उपयोग नहीं करता है? –

+1

कुंजी ** ** रूपांतरण रूपांतरण ** और ** पार्सिंग ** के बीच अंतर को समझना है, दृश्यों के पीछे 'isNaN',' तर्क 'प्रकार के लिए अपने तर्क का प्रकार टाइप करेगा, जबकि' parseInt' कोशिश करेगा * पार्स * प्रदान की गई स्ट्रिंग। यह भी देखें: http://stackoverflow.com/questions/4090518/string-to-int-use-parseint-or-number – CMS

उत्तर

19

isNaN एक तर्क के रूप में एक पूर्णांक लेता है - इसलिए जे एस धर्मान्तरित ""0 को

parseInt एक तर्क के रूप में एक स्ट्रिंग लेता है - इसलिए एक खाली स्ट्रिंग नहीं एक नंबर

+0

पहले से ही उत्तर दिया गया है - डुप्लिकेट http://stackoverflow.com/questions/825402/why-does-isnan -equal-false –

+10

'isNaN' एक" पूर्णांक "नहीं लेता है, यह * एक संख्या (जो सभी आईईईई -754 युगल हैं, उदाहरण के लिए 'आईएसएनएएन (0.5)' उपज 'झूठी' है), यही कारण है कि यह कोशिश करता है * प्रकार बदलें * तर्क मान संख्या – CMS

+0

आपका अधिकार - लेकिन मैं तर्क को सरल रखने की कोशिश कर रहा था। –

0

इसका कारण यह है "" शून्य के बराबर है है जावास्क्रिप्ट में "" == 0 आज़माएं। इसका अर्थ यह है कि यदि आप इसे संख्यात्मक समीकरण में मूल्यांकन करने का प्रयास करते हैं, तो यह 0 के रूप में सामने आएगा। जब आप इसे दूसरी ओर पार्स करते हैं तो यह महसूस होता है कि वहां कुछ भी नहीं है।

parseInt के विकल्प के रूप में आप Math.floor का उपयोग कर सकते हैं। यह "" के लिए आपको 0 देगा।

+0

"बराबर है" से आपका क्या मतलब है? – Kos

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