दिलचस्प पोस्ट
सूचक-टू-पॉइंटर के लिए 2 डी सरणी का रूपांतरण रुबी ऑब्फ़सकेटर कैसे जावा कनेक्शन में mysql समयक्षेत्र बदलने के लिए मैं कैसे लॉग इन कर सकता हूं और सबसे महंगी प्रश्न पूछ सकता हूँ? एक स्थिर सरणी के आकार को चर क्यों नहीं बनाया जा सकता? exe संकलक के लिए एक अच्छा अजगर? सी # में जेनेरिक क्या हैं? डेटा विशेषता प्राप्त करें विभिन्न प्रकार के सड़कों की मुद्रास्फीति को पुन: संग्रह और संभालना जावा 8 की धाराएं: क्यों समानांतर धारा धीमी है? आर एक्स में ब्रेक एक्स एक्सिस मोंगोडब में पेजिंग को लागू करना UIScrollView प्रोग्राम को नीचे स्क्रॉल करें कैसे निकालें एवेन्टएलस्टनर जो addEventListener है अनाम समारोह के साथ? वहाँ एक JQuery प्लगइन जो Draggable और चयन योग्य है

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

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

मुझे वास्तव में नहीं पता है कि ग्लोबल नेमस्पेस प्रदूषित साधनों को कैसे प्राप्त कर रहा है।

Solutions Collecting From Web of "इसका अर्थ यह है कि वैश्विक नामस्थान प्रदूषित होगा?"

कचरा संग्रहण पर त्वरित नोट

चर के गुंजाइश के रूप में, वे कचरा संग्रहण के लिए पात्र होंगे। अगर उन्हें विश्व स्तर पर स्कॉच किया गया है, तो वे संग्रह के लिए पात्र नहीं होंगे, जब तक कि वैश्विक नाम स्थान गुंजाइश खो देते हैं।

यहाँ एक उदाहरण है:

var arra = []; for (var i = 0; i < 2003000; i++) { arra.push(i * i + i); } 

इसे अपने वैश्विक नामस्थान में जोड़ने (कम से कम मेरे लिए) को 10,000 केबी मेमोरी उपयोग (win7 firefox) को एकत्र करना चाहिए जो कि एकत्रित नहीं किया जाएगा। अन्य ब्राउज़र अलग-अलग तरीके से इसे संभाल सकते हैं

जबकि उस क्षेत्र में ऐसी ही एक कोड है जो इस तरह से गुंजाइश है:

 (function(){ var arra = []; for (var i = 0; i < 2003000; i++) { arra.push(i * i + i); } })(); 

बंद होने के बाद arra को arra अनुमति दी जाएगी और कचरा संग्रहण के लिए पात्र होंगे।

ग्लोबल नेमस्पेस आपका मित्र है

वैश्विक नाम स्थान का उपयोग करने के कई दावों के बावजूद, यह आपका मित्र है। और एक अच्छे दोस्त की तरह, आपको अपने रिश्ते का दुरुपयोग नहीं करना चाहिए

नेक बनो

ग्लोबल नेमस्पेस (आमतौर पर "प्रदूषण" के रूप में संदर्भित) दुरुपयोग न करें। और वैश्विक नाम स्थान का दुरुपयोग न करें I का मतलब क्या है – एकाधिक ग्लोबल वैरिएबल न बनाएं वैश्विक नामस्थान का उपयोग करने का यह एक बुरा उदाहरण है

 var x1 = 5; var x2 = 20; var y1 = 3 var y2 = 16; var rise = y2 - y1; var run = x2 - x1; var slope = rise / run; var risesquared = rise * rise; var runsquared = run * run; var distancesquared = risesquared + runsquared; var distance = Math.sqrt(dinstancesquared); 

यह 11 वैश्विक चर बनाने वाला है जो संभवतः कहीं ओवरराइट या गलत तरीके से हो सकता है।

संसाधनपूर्ण रहें

एक अधिक संसाधन उपाय, जो वैश्विक नाम स्थान को प्रदूषित नहीं करता है, यह सभी मॉड्यूल पैटर्न में लपेटेगा और केवल एक वैश्विक चर का उपयोग करेगा, जबकि कई चर को उजागर करेगा।

यहां एक उदाहरण है: (कृपया ध्यान दें यह आसान है और कोई त्रुटि हैंडलिंग नहीं है)

 //Calculate is the only exposed global variable var Calculate = function () { //all defintions in this closure are local, and will not be exposed to the global namespace var Coordinates = [];//array for coordinates var Coordinate = function (xcoord, ycoord) {//definition for type Coordinate this.x = xcoord;//assign values similar to a constructor this.y = ycoord; }; return {//these methods will be exposed through the Calculate object AddCoordinate: function (x, y) { Coordinates.push(new Coordinate(x, y));//Add a new coordinate }, Slope: function () {//Calculates slope and returns the value var c1 = Coordinates[0]; var c2 = Coordinates[1]; return c2.y - c1.y / c2.x - c1.x;//calculates rise over run and returns result }, Distance: function () { //even with an excessive amount of variables declared, these are all still local var c1 = Coordinates[0]; var c2 = Coordinates[1]; var rise = c2.y - c1.y; var run = c2.x - c1.x; var risesquared = rise * rise; var runsquared = run * run; var distancesquared = risesquared + runsquared; var distance = Math.sqrt(distancesquared); return distance; } }; }; //this is a "self executing closure" and is used because these variables will be //scoped to the function, and will not be available globally nor will they collide //with any variable names in the global namespace (function () { var calc = Calculate(); calc.AddCoordinate(5, 20); calc.AddCoordinate(3, 16); console.log(calc.Slope()); console.log(calc.Distance()); })(); 

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

 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 

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

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

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