Если вы объявляете переменную в замыкании после того, как определение функции вызовет эту переменную, она все еще использует переменную области действия.
function ShowMe() {
alert(myVar); //alerts "cool"
}
var myVar = "cool";
Этот процесс усложнит еще один слой в отношении пространства имен.
Помимо этого, существует множество методов пространства имен, а также команды расширения / applyIf и т. Д., Которые могут выполнять практически те же функции. namespace () в ExtJS или $ .extend в jQuery, например. Таким образом, это может быть приятно иметь, но не является абсолютной необходимостью в конструкциях языка. Я думаю, что формализация некоторых расширений для Array и поддержка дат в ISO-8601 в Date намного важнее. Из-за необходимости просто проверять каждый слой пространства имен для определения ...
window.localization = $.extend(window.localization || {}, {
...
});
window.localization.en = $.extend(window.localization.en || {}, {
...
});