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