null + 1 = 1

undefined + 1 = NaN

मैं समझ नहीं पा रहा हूं कि इसके पीछे क्या लॉजिक है। क्या दोनों को एक ही परिणाम नहीं देना चाहिए था?

5
Mohit Bhardwaj 29 मार्च 2018, 10:46

3 जवाब

सबसे बढ़िया उत्तर

मूल रूप से, क्योंकि भाषा की विशिष्टता यही कहती है - ToNumber को देखकर:

Type        Result
Null        +0
Undefined   NaN

और NaN + कुछ भी NaN है

यह हो सकता है भाषा के दृष्टिकोण से कुछ समझ में आता है: null का अर्थ स्पष्ट खाली मान है जबकि अपरिभाषित का अर्थ अज्ञात मान है। किसी तरह - शून्य "संख्या रिक्त मान" है क्योंकि यह जोड़ के लिए तटस्थ है। उस ने कहा - यह काफी खिंचाव है और मुझे लगता है कि यह आम तौर पर खराब डिजाइन है। वास्तविक जावास्क्रिप्ट कोड में - आप लगभग कभी भी चीजों में null नहीं जोड़ते हैं।

8
Benjamin Gruenbaum 29 मार्च 2018, 07:49

अपरिभाषित का अर्थ है कि एक चर घोषित नहीं किया गया है, या घोषित किया गया है लेकिन अभी तक एक मान असाइन नहीं किया गया है, शून्य एक असाइनमेंट मान है इसका मतलब है "कोई मूल्य नहीं" http://www.jstips.co/en/javascript /मतभेद-बीच-अपरिभाषित-और-शून्य/

कास्टिंग चर प्रकारों के जेएस की स्वाभाविकता null + 1 में लागू होती है (क्योंकि नल टाइपऑफ ऑब्जेक्ट है), इस बीच इसे "नो वैल्यू" (अपरिभाषित) में लागू नहीं किया जा सकता है।

जब जावास्क्रिप्ट "गलत" डेटा प्रकार पर काम करने की कोशिश करता है, तो यह कोशिश करेगा मान को "दाएं" प्रकार में बदलने के लिए। https://www.w3schools.com/js/js_type_conversion.asp

अधिक जानकारी: https://codeburst.io/javascript-null-vs-undefined-20f955215a2

1
zelda11 29 मार्च 2018, 08:03

क्योंकि undefined का अर्थ है कि इसका मान अभी तक परिभाषित नहीं है इसलिए इसमें NaN लगेगा और जब आप इसमें 1 जोड़ते हैं NaN + 1 जिसके परिणामस्वरूप मान अभी भी परिभाषित नहीं है NaN

और दूसरी ओर null + 1 - ऑब्जेक्ट का null मान है और आप 1 जोड़ने की कोशिश कर रहे हैं ताकि वह 1 लौटाएगा जो ऑब्जेक्ट को सौंपा गया है

आप इसे बुनियादी अंतर के लिए भी देख सकते हैं - अशक्त और अपरिभाषित में क्या अंतर है जावास्क्रिप्ट में?

2
Meet Patel 29 मार्च 2018, 07:58