2013-07-23 7 views
5

प्रोग्रामिंग भाषाओं में NaN मूल्य क्यों है?जब हम TypeErrors फेंक सकते हैं तो हमें NaN मान की आवश्यकता क्यों है?

Math.floor('string'); //--> NaN 

क्यों न केवल टाइप एरर फेंक दें?

TypeError: Expected number instead of string 

प्रश्न दोनों और टैग है क्योंकि जावास्क्रिप्ट भाषा मैं मुख्य रूप से से परिचित हूँ, लेकिन मैं इस अन्य भाषाओं पर भी लागू होती पता है।

+0

क्योंकि अपवाद गर्दन में दर्द होता है :) – Pointy

+0

@ पॉइंटी उन्हें पकड़ना इतना कठिन प्रतीत नहीं होता है। –

+1

वे कोड में एक प्रकार की गैर-रैखिकता पेश करते हैं। यह इतना नहीं है कि यह * कठिन * है, यह सिर्फ विचलित और गन्दा है। – Pointy

उत्तर

4

टाइप की गई भाषाओं में, आपको संख्या संख्या में एक संख्या रखना होगा, भले ही आपके पास कोई संख्या न हो। आपने NaN डाल दिया है (यही कारण है कि typeof NaN जावास्क्रिप्ट में "number" है)। जब आप बेहतर नहीं होते हैं तो ऑब्जेक्ट संदर्भों के लिए यह null जैसा है।

और अपवाद, जो निर्देशों के प्रवाह को तोड़ते हैं, वास्तव में सभी के लिए इतना लोकप्रिय नहीं हैं। कुछ लोग तर्क दे सकते हैं कि उन्हें अपवाद मामलों के लिए इस्तेमाल किया जाना चाहिए, न कि साधारण तथ्य यह है कि एक स्ट्रिंग एक संख्या के रूप में पारदर्शी नहीं है।

ध्यान दें कि NaN भी गणितीय ऑपरेशन का परिणाम हो सकता है, यह तय करना संभव नहीं है कि परिणाम क्या होना चाहिए (उदाहरण के लिए 0 * Infinity)। सभी परिचालनों में शाखाकरण को शामिल करने के बजाय नाएन के साथ इसे संभालना आसान है।

+0

धन्यवाद! आप एक दिलचस्प सादृश्य बनाते हैं 'NaN: संख्या :: शून्य: ऑब्जेक्ट' –

+1

@Web_Designer नोट करें कि' टाइपऑफ नल ''ऑब्जेक्ट" ':) –

3

जावास्क्रिप्ट एक कमजोर टाइप की गई भाषा है। फेंकने में त्रुटि महंगी है। Jquery या underscore के माध्यम से देखो और आप देखेंगे कि त्रुटियों को शायद ही कभी "असाधारण" मामलों के लिए फेंक दिया जाता है। NaN जैसे मानों से निपटने के लिए यह कम महंगा और आसान है।

4

अनैतिक होने के लिए, ऐसा इसलिए है क्योंकि NaN एस (साथ ही साथ अन्य गैर-संख्यात्मक मात्राएं, अनंतता की तरह) IEEE 754 floating-point standard का हिस्सा हैं, जो कई प्रोग्रामिंग भाषाएं लागू होती हैं।

यह संख्यात्मक गणना में "विशेष मामलों" की गणना करने के लिए गणना की गई है ताकि गणनाओं में बाधा डाले बिना सामान्य संख्याओं का मूल्यांकन किया जा सके। इसका मतलब कोई अपवाद नहीं है। इसके बदले, NaNs आम तौर पर संचालन के माध्यम से प्रचारित होते हैं जब तक कि वे दूसरी तरफ बेहतर या बदतर न हों।

+1

हां, हालांकि इस विशेष मामले में यह एक * छोटा * वापस करने के लिए संदिग्ध है' NaN '। – Pointy

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

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