JavaScript-də Dəyişənlər Konfliktləri

Tutaq ki, bizim index.html HTML səhifəsi var, hansı ki, script teqində siz str dəyişənini yaradır və onu ekranda göstərirsiz:

index.html<html>
  <head>
    <script>
      let str = 'script text';
      alert(str); // 'script text' çap edəcək
    </script>
  </head>
  <body>
    ...
  </body>
</html>

Tutaq ki, bizim həmçinin script.js faylı var, hansında həmçinin str dəyişəni təyin olunub:

script.jslet str = 'file text';

İndi tutaq ki, bizim script.js faylı index.html səhifəsinə aşağıdakı kimi qoşulur:

html<html>
  <head>
    <script>
      let str = 'script text';
    </script>
    <script src="script.js"></script>
    <script>
      alert(str);
    </script>
  </head>
  <body>
    ...
  </body>
</html>

str dəyişəni həm index.html faylında, hem də script.js faylında olduğu üçün, konflikt yaranacaq, hansında ki, aşağıda yazılan dəyişən, yəni script.js faylından olan dəyişən qalib gələcək. Yəni bizim kod gözlədiyimiz kimi 'script text' deyil, 'file text' çap edəcək.

Problem əslində çox ciddidir. Real vebsaytda çox vaxt skriptləriniz olan bir neçə fayl olacaq, bundan əlavə, siz bəzi xarici plaginlər qoşacaqsınız. Bu halda bir faylın dəyişənləri və funksiyaları başqa faylın dəyişən və funksiyaları ilə konfliktə girə bilər.