2012-12-27 24 views
6

मुझे हमेशा आश्चर्य हुआ कि जावास्क्रिप्ट आंतरिक रूप से null मूल्यों को कैसे स्टोर करता है। null किसी भी मूल्य से अलग है। मुझे कल्पना है कि स्कोप के चर किसी संरचना के सरणी में संग्रहित होते हैं, प्रत्येक संरचना एक चर के अनुरूप होती है। क्या इस संरचना में कुछ प्रकार की बुलियन संपत्ति है जिसे "नल" कहा जाता है?जावास्क्रिप्ट आंतरिक रूप से शून्य मान कैसे संग्रहीत करता है?

मैं इसके लिए अपने आप वी 8 स्रोत कोड में विचार करेंगे, लेकिन बहुत सी ++ कोड :(में खो गया हूँ हूँ

मैं गूगल पर कुछ भी नहीं मिला। अधिकांश परिणाम जैसे प्रश्नों से संबंधित थे "कैसे करने के लिए यह निर्धारित करें कि क्या चर अपरिभाषित है या शून्य है? "या इसी तरह के

+3

यह शायद दुभाषिया पर निर्भर करता है, हालांकि मुझे यह जानकर आश्चर्य होगा कि यह शून्य से कहीं अलग था। यह वास्तव में एक महत्वपूर्ण जानकारी नहीं है। – Pointy

+1

यह ध्यान रखें कि कई "झूठी" मान हैं: शून्य, अपरिभाषित, झूठी, 0, आदि। अधिक संभावना है कि प्रत्येक चर पर एक "प्रकार" फ़ील्ड है जो इंगित करता है कि मान शून्य, अपरिभाषित, संख्या है, एक बूलियन, एक वस्तु, आदि – cdhowie

+0

@ पॉइंटी निश्चित रूप से, यह दुभाषिया पर निर्भर करता है। यदि यह शून्य मानों को शून्य के रूप में संग्रहीत करेगा तो क्यों '(शून्य === 0) '' झूठा' लौटाता है? –

उत्तर

3

जावास्क्रिप्ट, एक कमजोर टाइप की गई स्क्रिप्टिंग भाषा होने के कारण, संभवतः एक प्रकार का प्रकार है जो सभी प्रकार के मानों का समर्थन करता है। मेरा मानना ​​है कि PHP समान प्रकार के चर का उपयोग करता है, हालांकि वे अन्य भाषाओं में भी जाने जाते हैं और COM ऑटोमेशन में एक महत्वपूर्ण भूमिका निभाते हैं।

वे मूल हैं सहयोगी structs जिसमें एक प्रकार और एक मूल्य होता है। मान एक साधारण मूल्य, या एक बड़ा या अधिक जटिल मूल्य के लिए एक सूचक हो सकता है। null केवल समर्थित प्रकारों में से एक है, इस स्थिति में मूल्य स्वयं कोई भूमिका निभाता है।

लेकिन चूंकि जावास्क्रिप्ट कई दुभाषियों को जानता है, इस बारे में कोई नियम नहीं है कि इसे कैसे कार्यान्वित किया जाता है, और ऐसा कुछ है जिसके बारे में आपको चिंता नहीं करनी चाहिए। आम तौर पर आपको केवल समय-महत्वपूर्ण अनुप्रयोगों के लिए अंतर्निहित तकनीकों के बारे में जानने की आवश्यकता होगी, जिन्हें जावास्क्रिप्ट में वैसे भी लिखा जाना चाहिए।

+2

'शून्य 'एक अलग प्रकार नहीं है, वास्तव में; यह 'ऑब्जेक्ट' संदर्भ मानों के लिए खाली मान है। – Pointy

+0

मैं सामान्य रूप से ज्ञात संस्करण रिकॉर्ड में कार्यान्वयन के बारे में बात कर रहा था। जावास्क्रिप्ट एक विशेष प्रकार की वस्तु के रूप में 'शून्य' का वर्णन कर सकता है, लेकिन मुझे अत्यधिक संदेह है कि आंतरिक रूप से वास्तव में एक वस्तु है। – GolezTrol

+1

@ पॉइंटी (हालांकि मैं थोड़ा आश्चर्यचकित था कि 'टाइपऑफ (शून्य) 'रिटर्न' ऑब्जेक्ट" '।) –