Извините, что говорю это, но ответы, которые вы получили, являются вредными привычками, от которых вам следует держаться подальше. лучшая практика программирования и, возможно, правильная практика программирования будет заключаться в псевдо-именном пространстве ваших глобальных переменных, чтобы не загромождать глобальное пространство имен / область.Причина этого заключается в том, чтобы сделать ваш код более управляемым и, что более важно, облегчить вам жизнь, если / когда ваше приложение станет большим.Простым механизмом определения пространства имен является использование шаблона модуля, известного Дугласом Крокфордом.
Вот простой пример:
var myNamespace = function(){
var o = {};
var globals = {};
var setGlobVar = function(name, value) {
globals[name] = value;
};
var getGlobVar = function(name) {
if (globals.hasOwnProperty(name)) {
return globals[name];
} else {
// return null by default if the property does not exist
return null;
}
};
o.setGlobVar = setGlobVar;
o.getGlobVar = getGlobVar;
return o;
}();
Чтобы использовать это, вы просто называете его как методы объекта.
myNamespace.setGlobVar("secret_msg", "Dumbledore dies, so does Hedwig");
myNamespace.getGlobVar("secret_msg");
Вы также можете выставить globals
переменная вместо использования методов setGlobVar
и getGlobVar
для ее использования, если вы хотите упростить доступ к переменной.
Смысл в том, чтобы избежать определения переменных в глобальномкак можно больше пространства имен (т. е. объекта window
), создав собственное пространство имен.Это уменьшает вероятность коллизий имен, случайного перезаписи или переопределения, и опять же, беспорядка глобального пространства имен.
Еще более простой подход к этому - просто определить объект и расширить его свойства.
var globals = {};
globals.SECRET_MSG = "Snape is not a traitor"
Хотя я бы расширил этот подход, поместив globals
в пространство имен, которое является специфическимк моему приложению.
var myNamespace = {};
myNamespace.globals = {};
myNamespace.globals.SECRET_MSG = "Snape is not a traitor"
ПРИМЕЧАНИЕ. На самом деле это то же самое, что и исходный подход модуля-шаблона, который я предложил, только без методов доступа get
и set
и кодированные по-разному.