दिलचस्प पोस्ट
एंड्रॉइड लंबित इंस्टेंट क्या है? सन्देश संदेश द्वारा जीआईटी रिपॉजिटरी खोज कैसे करें? एक ही नाम के साथ कई फ़ंक्शन एक Genymotion VM (कोई खींचें और ड्रॉप समर्थन के साथ) में Google Play सेवाएं स्थापित करने के लिए कैसे? एंड्रॉइड में Html.fromHtml () का उपयोग करके टेक्स्ट रंग हाइलाइट करना? क्या 0 का एक HTTP स्थिति कोड का कोई अर्थ है? बाँस में वैरिएबल के साथ फ़्लोटिंग प्वाइंट कॉन्ट्रैक्ट RE: ggplot2 के साथ व्यक्तिगत सलाखों पर संख्याओं की संरेखण सी # में ToUpper () और ToUpperInvariant () के बीच अंतर क्या है? सी में मेरी सरणी के आकार को मैं कैसे निर्धारित करूं? कैसे स्क्लिट में छवि को ब्लॉब के रूप में संग्रहीत करना और इसे कैसे प्राप्त करना है? आर में कॉलम-वैक्टर की सूची में मैट्रिक्स कैसे परिवर्तित करें? पर कॉन्फ़िगरेशन को नहीं कहा जा रहा है नरम कीबोर्ड दिखाए जाने पर लेआउट्स को ले जाएं? PHP में XML दस्तावेज़ जेनरेट करना (एस्केप वर्ण)

क्यों नल "वस्तु" प्रकार है?

मैं 'वेब डेवलपर्स के अध्याय 4 के लिए व्यावसायिक जावास्क्रिप्ट' पढ़ रहा हूं और यह मुझे बताता है कि पांच प्रकार के प्राचीन हैं: अपरिभाषित, रिक्त, बुलियन, नंबर और स्ट्रिंग

यदि null एक आदिम है, तो typeof(null) "object" वापस क्यों आता है?

इसका मतलब यह नहीं होगा कि संदर्भ से null पारित किया जाता है (मैं मान रहा हूं कि सभी वस्तुओं को संदर्भ से पारित किया गया है), इसलिए यह एक आदिम नहीं बना रहा है?

वेब के समाधान से एकत्रित समाधान "क्यों नल "वस्तु" प्रकार है?"

जावास्क्रिप्ट के पहले कार्यान्वयन में, जावास्क्रिप्ट मूल्यों को एक प्रकार टैग और एक मान के रूप में दर्शाया गया था, वस्तुओं के लिए प्रकार टैग के साथ 0 , और null को NULL सूचक (अधिकांश प्लेटफ़ॉर्म पर 0x00 ) के रूप में दर्शाया गया था। नतीजतन, शून्य एक प्रकार टैग के रूप में 0 था, इसलिए बोगस टाइप typeof रिटर्न वेल्यू ( संदर्भ )।

  typeof null === 'object'; // This stands since the beginning of JavaScript 

एक "फिक्स" का प्रस्ताव ECMAScript (एक ऑप्ट-इन के माध्यम से) के लिए किया गया था। इसके परिणामस्वरूप होता है:

 typeof null === 'null' 

… लेकिन इस बदलाव को खारिज कर दिया गया था, इस विशिष्ट "छांटने" का उपयोग करके कोड के साथ समस्याओं के कारण, null परीक्षण करने के लिए।

यदि null एक आदिम है, तो typeof(null) "object" वापस क्यों आता है?

क्योंकि कल्पना इतना कहते हैं

11.4.3 ऑपरेटर के प्रकार

यूनियन एक्सपे्रेशन का उत्पादन: यूनानी एक्सपे्रेशन का प्रकार निम्नानुसार मूल्यांकन किया जाता है:

  1. वैर को यूनरी एक्सपेरशन के मूल्यांकन के परिणाम दें
  2. यदि प्रकार ( वैल ) संदर्भ है , तो फिर
    ए। यदि IsUnresolvableReference ( val ) सही है , तो " undefined " पर लौटें
    ख। मान दें GetValue ( Val )।
  3. तालिका 20 के अनुसार टाइप ( वाल ) के अनुसार निर्धारित स्ट्रिंग लौटें

यहां छवि विवरण दर्ज करें

जैसा कि इंगित किया गया है, कल्पना इसलिए कहते हैं लेकिन जावास्क्रिप्ट के कार्यान्वयन से ईसीएमएस्क्रिप्ट स्पेक के लेखन की भविष्यवाणी की जा रही है, और विनिर्देश सावधानीपूर्वक नहीं था कि प्रारंभिक कार्यान्वयन के फ़ाइबल्स को सही किया जाए, फिर भी यह एक वैध सवाल है कि यह पहली जगह में ऐसा क्यों किया गया है। डगलस क्रॉकरफोर्ड इसे एक गलती कहते हैं । किरो रिस्क यह सोचता है कि थोड़े सॉर्टा समझ में आता है :

इस के पीछे तर्क यह है कि undefined विपरीत, null , (और अभी भी होता है) अक्सर उपयोग किया जाता है जहां वस्तुओं दिखाई देती हैं। दूसरे शब्दों में, किसी वस्तु के रिक्त संदर्भ को चिन्हित करने के लिए अक्सर null का उपयोग किया जाता है जब ब्रेंडन इइच ने जावास्क्रिप्ट बना दिया, तो उन्होंने एक ही प्रतिमान का अनुसरण किया, और इसे "ऑब्जेक्ट" वापस करने के लिए (यकीनन) अर्थ दिया वास्तव में, ईसीएमएस्क्रिप्ट विनिर्देशन किसी भी ऑब्जेक्ट मान (ईसीएमए -262, 11.4.11) के जानबूझकर अनुपस्थिति को प्रस्तुत करने वाले आदिम मूल्य के रूप में null को परिभाषित करता है।

यदि null एक आदिम है, तो typeof(null) " object " वापस क्यों आता है?

संक्षेप में: यह ECMAScript में बग है, और प्रकार null होना चाहिए

संदर्भ: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null

पुस्तक से YDKJS

ये जेएस में एक लंबे समय से चलने वाला बग़ीब है, लेकिन जो कि कभी भी तय नहीं किया जा सकता है। वेब पर बहुत अधिक कोड बग पर निर्भर करता है और इस प्रकार यह तय करने से बहुत अधिक बग पैदा होंगे!