मुझे एक रूटीन लिखना था जो किसी चर के मान को 1 से बढ़ाता है यदि उसका प्रकार है number
और चर को 0 असाइन करता है यदि नहीं, तो चर शुरू में null
या undefined
।
पहला कार्यान्वयन v >= 0 ? v += 1 : v = 0
इसलिए हुआ क्योंकि मुझे लगा कि कोई भी संख्या एक अंकगणितीय अभिव्यक्ति को गलत नहीं बनाएगी, लेकिन यह गलत है क्योंकि null >= 0
इसका मूल्यांकन सही है। तब मैंने सीखा कि null
व्यवहार 0 जैसा है और निम्नलिखित अभिव्यक्तियों का मूल्यांकन सभी सच है।
null >= 0 && null <= 0
!(null < 0 || null > 0)
null + 1 === 1
1 / null === Infinity
Math.pow(42, null) === 1
बेशक, null
नहीं है 0 null == 0
का मूल्यांकन असत्य के लिए किया गया है। यह प्रतीत होता है tautological अभिव्यक्ति (v >= 0 && v <= 0) === (v == 0)
झूठी है।
null
0 जैसा क्यों है , हालांकि यह वास्तव में 0 नहीं है?
null
या undefined
:c = -~c // Results in 1 for null/undefined; increments if already a number
undefined
एक वैरिएबल वैल्यू है, वैरिएबल के लिए जिसे इनिशियलाइज़ नहीं किया गया है। null
दूसरी ओर, एक खाली वस्तु मूल्य है, और संख्याओं के साथ मिश्रित नहीं होना चाहिए। null
संख्याओं के साथ संयुक्त नहीं होना चाहिए, इसलिए अशक्त को संख्याओं की तरह व्यवहार नहीं करना चाहिए।