Единственный способ не иметь глобальной переменной - это использовать ключевое слово var
в области действия функции.Все остальное - глобальная переменная.
(function() {
var local = 5;
})();
Неважно, является ли функция литералом или определением функции, она имеет в качестве некоторого типа функции.
Примеры глобальных переменных:
1 :
var global = 5;
Вышеуказанное не входит в область действия функции, поэтому глобальное дажеесли var
используется.
2.
(function() {
global = 5;
})();
В приведенном выше примере var
не использовалось, поэтому оно становится подразумеваемым глобальным.
3.
function foo(){}
foo
не определен внутри другой функции или не назначен объектной клавише, поэтому ее можно использовать глобально.
4.
(function() {
var local = global = 5;
})();
При выполнении нескольких присваиваний с var
только первая переменная становится локальной ... so global
является глобальной переменной и равняется 5.
5.
window.foo = 5;
Префикс window.
является явным способом определения глобальной переменной в контекстебраузер.
6.
this.x = 5;
По умолчанию в браузерах this
указывает на DOMWindow, если только вы не используете метод, привязанный к объектучто не window
.Это так же, как # 5.Обратите внимание, что если вы используете метод, такой как XMLHttpRequest, контекст имеет вид окна.
7.
with ( window ) { name = 'john'; }
Если вы используете оператор with
и выНе ссылайтесь на объект, который уже имеет свойство, определяется глобальная переменная.Лучше всего избегать использования ключевого слова with
.
Вывод:
Лично я бы оставил свой код в области действия анонимной функции, и только явно объявляет глобальные переменные, когда мне нужно.
(function() {
var governor = 'Schwarzenegger',
state = 'California';
window.president = 'Obama';
})();
В приведенном выше описании я определяю governor
и state
переменные, и они являются локальными для моей функции.Я хочу явно определить president
как глобальную переменную.Таким образом, меня не смущает, какие переменные я определил как глобальные или нет, потому что я явно префиксирую их как window.
.