Часто на веб-страничку навешивается очень много скриптов и сторонних библиотек. От этого становится сложно отследить все внешние переменные, а также, перестраховаться от создания в будущем новых переменных с таким же именем. Мало того что нужно уделять много времени и творчества на создание уникальных, длинных имён переменных, так еще к тому же — эти переменные будут висеть в памяти, засоряя её, и еще при этом — создавать угрозу конфликтов.
Решить эту проблему очень просто.
Метод 1:
Идея такова: Создаем анонимную функцию, в тело которой помещаем наш код, и сразу выполняем её.
Пример:
(function(){ // наша анонимная функция
// Далее следуют код, который не повлияет на глобальную область видимости
var myVar = 123;
// ...
alert(myVar); // 123
})();
alert(myVar); // ошибка: myVar is not defined
Поскольку функция анонимна, она тоже не засоряет область видимости.
Таким образом мы получим очень удобный, красивый, безопасный код. А главное — имена переменных можно придумывать, не заботясь о других.
Метод 2:
Еще один распространённый метод решения данной проблемы — это не создавать новые глобальные переменные, а вместо них создавать свойства какого-то уникального объекта. Так поступают многие известные яваскриптовыми фреймворки.
Пример:
var myUniqFunctional = {
myVar1: 123,
myVar2: "abc"
};
myUniqFunctional.myVar3 = true;
// Пример использования:
alert(myUniqFunctional.myVar1); // 123
В этом случае все наши переменные (свойства объекта) доступны в глобальной области, но только через некий идентифицирующий объект. Обратите внимание, что уникальность имени этого объекта мы тоже должны обеспечить. Но это лучше, чем обеспечивать уникальность большого количества внешних переменных в глобальной зоне видимости.
В заключении хочу сказать, что 1-й метод с анонимными функциями мне нравится намного больше, потому что код получается более компактный и независимый.