По моему опыту, большинство JS-функций, функций-конструкторов или функций-шаблонов объявляются как глобальные или связаны с глобальным объектом пространства имен.В любом случае, эти идентификаторы доступны по всему миру.
Из любой строки кода в вашей системе вы можете получить:
mod1 = somepackage.SomeModule(); // couple to me!
Вот краткий пример JS, но на других языках эта идея применима.
function A () { // couple to me!
return { foo: "bar" };
};
(function () {
function B () { // don't couple to me!
function c () { // really don't couple to me!
return "buzz";
};
return { fizz: c() }; // 0 scope lookup
};
var a = A(); // 1 scope lookup
var b = B(); // 0 scope lookup
})();
var a1 = A(); // 0 scope lookup
var b1 = B(); // B is not defined
Поскольку глобальные переменные считаются вредными, насколько должна быть ограничена видимость функций / классов?Каковы компромиссы?
Мой вопрос несколько мотивирован: ' когда приемлемы глобалы ', ' альтернативы глобалам ' и ' возвратглобалы '
Спасибо!