Подтвердить что ты не робот

Как очистить глобальные переменные?

У меня есть несколько страниц aspx (50+). Мне нужно объявить число (5-7) глобальных переменных на каждой из этих страниц. Переменные на одной странице независимо от других страниц, хотя некоторые могут быть одинаковыми.

В настоящее время я объявляю на верх страницы и вне любой функции.

Должен ли я подойти к этому по-другому и есть ли какие-либо побочные эффекты этого подхода?

Если точный дубликат, пожалуйста, дайте мне знать. Благодаря

4b9b3361

Ответ 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;, чтобы обеспечить его чистоту по крайней мере.