जावास्क्रिप्ट में वेरिएबल संघर्ष
मान लीजिए कि आपके पास एक HTML पेज index.html है,
जिसमें script टैग के अंदर आप
एक वेरिएबल str बनाते हैं और उसे स्क्रीन पर प्रदर्शित करते हैं:
<html>
<head>
<script>
let str = 'script text';
alert(str); // 'script text' प्रदर्शित करेगा
</script>
</head>
<body>
...
</body>
</html>
मान लीजिए कि आपके पास script.js नामक एक फ़ाइल भी है,
जिसमें एक वेरिएबल str परिभाषित है:
let str = 'file text';
अब मान लीजिए कि आपकी script.js फ़ाइल
index.html पेज में इस प्रकार जुड़ी हुई है:
<html>
<head>
<script>
let str = 'script text';
</script>
<script src="script.js"></script>
<script>
alert(str);
</script>
</head>
<body>
...
</body>
</html>
चूंकि वेरिएबल str index.html फ़ाइल
में भी है, और script.js फ़ाइल में भी है,
तो एक संघर्ष होगा, जिसमें वह वेरिएबल जीतेगी
जो नीचे लिखी गई है, यानी script.js फ़ाइल
से वेरिएबल। यानी हमारा कोड
'file text' प्रदर्शित करेगा, न कि 'script
text', जैसा कि हम उम्मीद कर रहे हैं।
समस्या वास्तव में बहुत गंभीर है। एक वास्तविक वेबसाइट में, अक्सर आपके पास आपकी अपनी स्क्रिप्ट्स की कई फाइलें होंगी, इसके अलावा, आप कुछ तृतीय-पक्ष प्लगइन्स को भी जोड़ेंगे। इस स्थिति में एक फ़ाइल के वेरिएबल और फ़ंक्शन दूसरी फ़ाइल के वेरिएबल और फ़ंक्शन से संघर्ष कर सकते हैं।