К сожалению сказать, но ответы, которые вы получили плохие привычки, которые вы должны держаться подальше. A Лучшая практика программирования и, возможно, Практика программирования - это псевдопространство ваших глобальных переменных, чтобы не загромождать глобальное пространство имен/область. Обоснование этого заключается в том, чтобы сделать ваш код более управляемым и, что более важно, сделать жизнь проще для вас, если/когда ваше приложение станет большим. Простым механизмом определения пространства имен является использование шаблона модуля, прославленного Дугласом Крокфордом.
Вот простой пример:
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
аксессоров и закодированных по-разному.
«Глобальные переменные» * * (белые ложь) «атрибуты окна» (в контексте браузера). Что вы имеете в виду? – 2010-11-13 17:42:00
Что такое myVariable, который должен равняться при вызове globVar ('myVariable')? – William
@Lime - Ну не имеет значения, но по умолчанию должно быть «null». :) – Adam