Ответ 1
В JavaScript любая глобальная переменная на самом деле является свойством объекта window
. Использование одного эквивалентно (и взаимозаменяемому) с использованием другого.
Использование глобальных переменных, безусловно, является "общим", поэтому вопрос заключается в том, является ли он "правильным". Как правило, глобальные переменные обескуражены, поскольку к ним можно получить доступ из ЛЮБОЙ функции, и вы рискуете иметь несколько функций, которые пытаются читать и записывать в одни и те же переменные. (Это верно для любого языка программирования в любой среде, а не только для JavaScript.)
Решите эту проблему, создав пространство имен, уникальное для вашего приложения. Самый простой способ - создать глобальный объект с уникальным именем, а ваши переменные будут свойствами этого объекта:
window.MyLib = {}; // global Object container; don't use var
MyLib.value = 1;
MyLib.increment = function() { MyLib.value++; }
MyLib.show = function() { alert(MyLib.value); }
MyLib.value=6;
MyLib.increment();
MyLib.show(); // alerts 7
Другой подход заключается в использовании .data()
для присоединения переменных к соответствующему элементу DOM. Это не практично во всех случаях, но это хороший способ получить переменные, к которым можно получить доступ во всем мире, не оставляя их в глобальном пространстве имен.