questions - javascript programs




वैश्विक नामस्थान प्रदूषित होने का क्या अर्थ है? (2)

वैश्विक नामस्थान प्रदूषित होने का क्या अर्थ है?

मैं वास्तव में समझ नहीं पा रहा हूं कि वैश्विक नामस्थान प्रदूषित साधनों का क्या अर्थ है।


जब आप वैश्विक चर, फ़ंक्शन इत्यादि घोषित करते हैं, तो वे, ehm, वैश्विक नामस्थान पर जाते हैं। प्रदर्शन / स्मृति समस्याओं (जो उत्पन्न हो सकता है) के अलावा, आप दुर्भाग्यपूर्ण नाम संघर्ष में भागने की संभावना रखते हैं, जब आप किसी महत्वपूर्ण चर को फिर से परिभाषित करेंगे या आपके द्वारा उपयोग किए जाने वाले मान का उपयोग नहीं करेंगे।

वैश्विक नामस्थान में चीजों को परिभाषित करना टालना है।


जावास्क्रिप्ट में, फ़ंक्शन के बाहर की घोषणाएं वैश्विक दायरे में हैं। इस छोटे से उदाहरण पर विचार करें:

var x = 10;
function example() {
    console.log(x);
}
example(); //Will print 10

उपरोक्त उदाहरण में, वैश्विक दायरे में x घोषित किया गया है। किसी भी बच्चे के दायरे, जैसे कि example फ़ंक्शन द्वारा बनाए गए, प्रभावी रूप से किसी भी मूल स्कॉप्स में घोषित चीजों का वारिस करते हैं (इस मामले में, यह केवल वैश्विक दायरा है)।

वैश्विक दायरे में घोषित एक चर का पुनर्विक्रय करने वाला कोई भी बाल क्षेत्र वैश्विक चर को छाया देगा, संभावित रूप से अवांछित, बग को ट्रैक करने में कठोर कारण:

var x = 10;
function example() {
    var x = 20;
    console.log(x); //Prints 20
}
example();
console.log(x); //Prints 10

इस तरह की समस्याओं का कारण बनने की संभावना के कारण वैश्विक चर आमतौर पर अनुशंसित नहीं होते हैं। यदि हमने example फ़ंक्शन के अंदर var स्टेटमेंट का उपयोग नहीं किया है, तो हमने वैश्विक दायरे में x के मान को गलती से ओवरराइट कर दिया होगा:

var x = 10;
function example() {
    x = 20; //Oops, no var statement
    console.log(x); //Prints 20
}
example();
console.log(x); //Prints 20... oh dear

यदि आप और अधिक पढ़ना चाहते हैं और इसे ठीक से समझना चाहते हैं, तो मैं सुझाव देता हूं कि ईसीएमएस्क्रिप्ट विनिर्देश के माध्यम से जाएं। यह पढ़ने का सबसे रोमांचक नहीं हो सकता है लेकिन इससे कोई अंत नहीं होगा।





javascript