Javascript имеет область действия .Это означает, что каждая переменная, объявленная внутри функции, будет доступна только из этой функции.
Если вы правильно объявили переменную objectX с помощью var
, как показано ниже:
function X() {
...
var objectX = {};
...
return objectX;
}
затем objectX
будет известен как objectX
внутри функции X
.В другом месте это будет известно как любая переменная, которой вы его назначите.Поскольку в вашем коде вы ничего не присваиваете результат X()
, objectX
не будет доступен нигде.
Однако, вот один из более серьезных недостатков дизайна Javascript: если вы не явно объявляйте переменную (используя оператор var
или как параметр функции), эта переменная автоматически станет глобальной переменной.Это означает, что он будет доступен в любом месте .
. Поэтому в приведенном выше коде вы можете получить доступ к objectX
везде с этим именем.
anObject
с другой стороны, правильно объявлено (как параметр), и это означает, что его область действия будет ограничена функцией Z
.
Короче говоря, способ, которым ваш коднаписано, objectX
доступен везде через переменную objectX
, а внутри функции Z
вы можете ссылаться на нее как objectX
и anObject
.
Doзаметьте, однако, что глобальные переменные являются плохой вещью ™, поскольку они могут затруднить выяснение того, какая переменная назначается кем, когда и почему - как вы заметили.
Хотя Javascript делает невозможнымполностью избегайте их, как правило, вы должны стараться, чтобы область ваших переменных была как можно меньше (область видимости = где в вашей программе эта переменная может быть доступна).
С этой целью я бы рекомендовал рефакторинг вашейкод как яgorw имеет.