Sunday, 15 August 2010

node.js - What causes differences in global variables (interactive vs. scripts) -


मैं Node.js v0.10.1 < / Sup> (एक त्वरित उदाहरण के साथ प्रदर्शित):

इंटरैक्टिव कमांड लाइन में नोड चलते समय:

  & gt; Global.require {[समारोह: आवश्यकता]। । । } & Gt; की आवश्यकता {[फ़ंक्शन: की आवश्यकता] । । }   

निम्न script.js चलाते समय मुझे अनपेक्षित परिणाम मिलते हैं:

  console.log (global.require); // 1. console.log (आवश्यक); // 2.   
  अपरिभाषित // 1. 'global.require' अपरिभाषित है! {[फंक्शन: अपेक्षित] । ।} // 2. `` `` `` `` `` अपने आप को काम करता है, लेकिन काम करता है।   

मैंने ... द्वारा चिह्नित अतिरिक्त कोड निकाल दिया है I

ऐसा होने के कारण क्या होता है?

नोड। Js में एक मॉड्यूल है जो आपको अपना स्वयं का रीड-इक्वेलेट-प्रिंट-लूप्स (यह वही है जो repl के लिए है) बनाने की अनुमति देता है। इस मॉड्यूल का उपयोग करना एक ऐसा फ़ंक्शन है जिसका उपयोग आप एक नया repl बनाने के लिए करते हैं।

यह फ़ंक्शन एक विकल्प ऑब्जेक्ट लेता है जहां आप अपने repl कॉन्फ़िगर कर सकते हैं इनमें से एक विकल्प को उपयोगग्लोबल कहा जाता है इस विकल्प के लिए प्रलेखन के अनुसार निम्नलिखित वाक्य वैध है:

यदि true पर सेट है, तो repl को global ऑब्जेक्ट का उपयोग करेगा , एक अलग संदर्भ में स्क्रिप्ट चलाने के बजाय झूठे के लिए डिफ़ॉल्ट।

अब जब आप इंटरैक्टिव मोड में नोड.जे शुरू करते हैं, तो यह मूल रूप से कुछ नहीं है, बल्कि एक समान है जैसे आप < कोड> रिप मॉड्यूल मुझे लगता है (और कृपया ध्यान दें कि यह केवल एक अनुमान है!) यह है कि नोड.जेएस की डिफ़ॉल्ट रीप में उपयोग ग्लोबल को true पर सेट है।

इसलिए आपके पास एक वैश्विक ऑब्जेक्ट, जो कि वैसे भी वैश्विक नेमस्पेस के समान है। इसलिए सभी कार्यों जैसे की आवश्यकता होती है जिसे आप वैश्विक नाम स्थान पर पा सकते हैं, आप फिर से वैश्विक ऑब्जेक्ट पर पायेंगे।

एक बार जब आप एक नोड .js आवेदन गैर-इंटरैक्टिव मोड में है, कोई प्रतिलिपि नहीं है, इसलिए कोई वैश्विक ऑब्जेक्ट नहीं है।

क्या आपको यह समझ है?

No comments:

Post a Comment