JavaScriptda o'zgaruvchilar nizosi
Faraz qilaylik, bizda index.html HTML sahifasi bor,
unda script tegi ichida siz
str o'zgaruvchisini yaratasiz
va uni ekranga chiqarasiz:
<html>
<head>
<script>
let str = 'script matni';
alert(str); // 'script matni' chiqadi
</script>
</head>
<body>
...
</body>
</html>
Faraz qilaylik, bizda shuningdek script.js fayli bor,
unda ham str o'zgaruvchisi belgilanadi:
let str = 'fayl matni';
Endi faraz qilaylik, bizning script.js faylimiz
index.html sahifasiga quyidagicha ulangan:
<html>
<head>
<script>
let str = 'script matni';
</script>
<script src="script.js"></script>
<script>
alert(str);
</script>
</head>
<body>
...
</body>
</html>
str o'zgaruvchisi ham index.html faylida,
ham script.js faylida mavjud bo'lgani uchun,
nizo kelib chiqadi, bunda pastroqda yozilgan o'zgaruvchi,
ya'ni script.js faylidagi o'zgaruvchi g'alaba qozonadi.
Ya'ni bizning kodimiz 'fayl matni' ni chiqaradi,
biz kutayotgan 'script matni' ni emas.
Muammo aslida juda jiddiy. Haqiqiy saytda ko'pincha sizda bir nechta skript fayllari bo'ladi, bundan tashqari, siz ba'zi third-party plaginlarni ulaysiz. Bunday holatda bir faylning o'zgaruvchilari va funksiyalari boshqa faylning o'zgaruvchilari va funksiyalari bilan nizo kelitirishi mumkin.