"स्कोप" निष्पादन के वर्तमान संदर्भ को संदर्भित करता है जिसमें आपका कोड मूल्यों और अभिव्यक्तियों को संदर्भित या "देख" सकता है। कोड के विभिन्न हिस्सों से चर, वस्तुएं और कार्य उनके दायरे के आधार पर सुलभ हैं।
जावास्क्रिप्ट में, चर, वस्तुओं और कार्यों में एक वैश्विक दायरा, एक मॉड्यूल दायरा, एक ब्लॉक गुंजाइश, या एक समारोह क्षेत्र हो सकता है।
जावास्क्रिप्ट में वैश्विक दायरा
किसी फ़ंक्शन या किसी स्क्रिप्ट में ब्लॉक के बाहर घोषित किसी भी मान का वैश्विक दायरा होता है और आपके प्रोग्राम में कोई अन्य स्क्रिप्ट फ़ाइल इसे एक्सेस कर सकती है।
उदाहरण के लिए, एक फ़ाइल में वैश्विक चर घोषित करना:
// index.js
चलो वैश्विक चर = "कुछ मूल्य"
इसका मतलब है कि आपके प्रोग्राम की कोई अन्य स्क्रिप्ट इसे एक्सेस कर सकती है:
// अन्यस्क्रिप्ट.जेएस
सांत्वना देनालॉग (वैश्विक चर) // कुछ मूल्य
जावास्क्रिप्ट चर घोषित करना वैश्विक दायरे में बुरा व्यवहार है क्योंकि इससे नामस्थान प्रदूषण हो सकता है। वैश्विक नाम स्थान जावास्क्रिप्ट का शीर्ष स्थान है जिसमें चर, वस्तुएं और कार्य शामिल हैं। एक ब्राउज़र में, यह से जुड़ जाता है खिड़की ऑब्जेक्ट, जबकि NodeJS नामक ऑब्जेक्ट का उपयोग करता है वैश्विक.
वैश्विक नाम स्थान को प्रदूषित करने से नाम टकराव हो सकता है। यह एक ऐसी स्थिति है जिसमें आपका कोड एक ही नामस्थान में अलग-अलग चीज़ों के लिए समान चर नाम का उपयोग करने का प्रयास करता है। कई तृतीय-पक्ष पुस्तकालयों का उपयोग करने वाली बड़ी परियोजनाओं में नाम टकराव अक्सर सामने आते हैं।
मॉड्यूल स्कोप
एक मॉड्यूल एक स्टैंडअलोन फ़ाइल है जो किसी प्रोजेक्ट में उपयोग किए जाने वाले अन्य मॉड्यूल के लिए कोड के टुकड़ों को इनकैप्सुलेट और निर्यात करता है। यह आपको अपने कोडबेस को अधिक कुशलता से व्यवस्थित और बनाए रखने की अनुमति देता है।
ES मॉड्यूल को औपचारिक रूप दिया गया जावास्क्रिप्ट मॉड्यूल पैटर्न 2015 में जावास्क्रिप्ट में।
वेरिएबल्स जिन्हें आप मॉड्यूल में घोषित करते हैं, उस मॉड्यूल के दायरे में हैं, जिसका अर्थ है कि प्रोग्राम का कोई अन्य भाग उन तक नहीं पहुंच सकता है।
आप केवल इसके बाहर के मॉड्यूल में घोषित चर का उपयोग कर सकते हैं यदि मॉड्यूल उस चर का उपयोग करके निर्यात करता है निर्यात करना खोजशब्द। फिर आप उस नाम का उपयोग करके दूसरे मॉड्यूल में आयात कर सकते हैं आयात खोजशब्द।
यहां एक उदाहरण दिया गया है जो एक वर्ग के निर्यात को दर्शाता है:
// index.js
निर्यात करनाकक्षाफू{
निर्माता(संपत्ति_1, संपत्ति_2) {
यह.संपत्ति_1 = संपत्ति_1
यहसंपत्ति_2 = संपत्ति_2
}
}
और यहां बताया गया है कि आप उस मॉड्यूल को कैसे आयात कर सकते हैं और उसके द्वारा निर्यात की जाने वाली संपत्ति का उपयोग कर सकते हैं:
// someModule.js
आयात {फू} से './index.js'कॉन्स्ट बार = नया फू ('फू', 'छड़')
सांत्वना देनालॉग (bar.property_1) // फू
जावास्क्रिप्ट में फ़ाइलों को डिफ़ॉल्ट रूप से मॉड्यूल के रूप में घोषित नहीं किया जाता है।
क्लाइंट-साइड जावास्क्रिप्ट में, आप एक स्क्रिप्ट को मॉड्यूल के रूप में सेट करके घोषित कर सकते हैं प्रकार विशेषता मापांक पर लिखी हुई कहानी उपनाम:
<स्क्रिप्ट प्रकार ="मापांक" स्रोत ="index.js"></script>
NodeJS में, आप एक स्क्रिप्ट को मॉड्यूल के रूप में सेट करके घोषित कर सकते हैं प्रकार करने के लिए संपत्ति मापांक अपने में पैकेज.जेसन फ़ाइल:
{
"प्रकार": "मापांक"
}
ब्लॉक स्कोप
जावास्क्रिप्ट में एक ब्लॉक वह जगह है जहां घुंघराले ब्रेसिज़ की एक जोड़ी शुरू होती है और खत्म होती है।
एक ब्लॉक के भीतर घोषित चर होने देना, तथा स्थिरांक कीवर्ड उस ब्लॉक के दायरे में हैं, जिसका अर्थ है कि आप उन्हें इसके बाहर एक्सेस नहीं कर सकते। यह दायरा का उपयोग करके घोषित चर पर लागू नहीं होता है वर कीवर्ड:
{ // ब्लॉक की शुरुआत
स्थिरांक एक = '1'
दो =. दो '2'
वर तीन = '3'
} // ब्लॉक का अंतसांत्वना देनालॉग (एक) // त्रुटि फेंकता है
सांत्वना देनालॉग (तीन) // "3"
उपरोक्त ब्लॉक में संलग्न और कास्ट या लेट के रूप में घोषित चर केवल ब्लॉक के अंदर ही पहुंच योग्य हैं। हालाँकि, आप का उपयोग करके घोषित चर का उपयोग कर सकते हैं वर ब्लॉक के बाहर कीवर्ड।
फंक्शन स्कोप
किसी फ़ंक्शन के अंदर घोषित चर को आमतौर पर स्थानीय चर के रूप में संदर्भित किया जाता है और फ़ंक्शन के दायरे में होता है। आप उन्हें फ़ंक्शन के बाहर एक्सेस नहीं कर सकते। यह दायरा के साथ घोषित चर पर लागू होता है वर, होने देना, तथा स्थिरांक खोजशब्द।
चूंकि किसी फ़ंक्शन में घोषित चर फ़ंक्शन के लिए स्थानीय होते हैं, इसलिए चर के नामों का पुन: उपयोग किया जा सकता है। फ़ंक्शन-स्कोप्ड वैरिएबल नामों का पुन: उपयोग करना वैरिएबल शैडोइंग के रूप में जाना जाता है, और बाहरी चर को "छाया" कहा जाता है।
उदाहरण के लिए:
समारोहगुणा() {
होने देना एक = 1
वर दो = 2
स्थिरांक तीन = 3वापसी एक दो तीन
}
// वेरिएबल शैडोइंग
स्थिरांक तीन = 'तीन' // कोई त्रुटि नहीं फेंकता
स्कोपिंग नियमों की समझ महत्वपूर्ण है
जावास्क्रिप्ट में उपलब्ध कार्यक्षेत्रों की समझ होने से आपके लिए त्रुटियों से बचना आसान हो जाता है। किसी विशेष क्षेत्र में अनुपलब्ध चर का उपयोग करने का प्रयास बग का एक परिपक्व स्रोत है।
दायरे की समझ में वैश्विक नामस्थान प्रदूषण जैसी अवधारणाएं भी शामिल हैं, जो आपके कोड को बग के लिए अधिक प्रवण बना सकती हैं।