Как очистить глобальные переменные?
У меня есть несколько страниц aspx (50+).
Мне нужно объявить число (5-7) глобальных переменных на каждой из этих страниц.
Переменные на одной странице независимо от других страниц, хотя некоторые могут быть одинаковыми.
В настоящее время я объявляю на верх страницы и вне любой функции.
Должен ли я подойти к этому по-другому и есть ли какие-либо побочные эффекты этого подхода?
Если точный дубликат, пожалуйста, дайте мне знать.
Благодаря
Ответы
Ответ 1
Лучше всего не загромождать глобальную сферу. Тем более, что другие фреймворки или сценарии добавления могут загрязнять или перезаписывать ваши вары.
Создайте пространство имен для себя
http://www.javascripttoolbox.com/bestpractices/#namespace
Подробнее здесь: https://stackoverflow.com/search?q=namespace+javascript+global
Некоторые примеры, использующие разные методы настройки варов
ProjapatiNS = {}
ProjapatiNS.counter = 0;
ProjapatiNS["page1"] = { "specificForPage1":"This is page 1"}
ProjapatiNS.page2 = { "specificForPage2":"This is page 2", "pagenumber":2}
ProjapatiNS.whatPageAmIOn = function { return location.href.substring(location.href.lastIndexOf('page')+4)}
Ответ 2
Как поясняет @mplungjan, лучше всего избегать глобальных переменных.
Поскольку окно является глобальным, вы можете объявить пространство имен в любое время и в пределах любой функции с помощью window.NAMESPACE = {};
Затем вы можете получить доступ к NAMESPACE глобально и установить на нем свои значения как свойства, из той же или другой функции:
NAMESPACE = { var1:"value", var2:"value" /* etc */ };
Если вы можете сделать все это в файлах script, а не непосредственно на своей странице, то тем лучше, однако, я думаю, вы можете не иметь значений, доступных в статическом script.
Ответ 3
Один из подходов заключался бы в том, чтобы объявить переменную на уровне "root", то есть вне любых кодовых блоков, прежде чем какой-либо другой JS-код попытается получить к ней доступ.
Вы можете установить глобальные переменные, используя window.variablename = value;
, чтобы обеспечить его чистоту по крайней мере.