Только переменные, объявленные без var
, становятся глобальными, это не относится к функциям.
Однако вы можете объявить foo следующим образом:
foo = function() {}
и оно должно быть глобальным.
Пропуск var
, как правило, не рекомендуется по этим причинам (вне головы):
- Разрешение переменной начинается с самого локального и направлено на поиск в глобальном пространстве имен, делая это медленнее.Гораздо медленнее в некоторых браузерах.
- Вы склонны в конечном итоге конфликтовать с именами, загрязняя глобальное пространство имен.Например, одним из худших нарушителей будет
for(i = 0; i < arr.length; i++)
(обратите внимание на отсутствие var
)
Возможно, вы захотите объявить функции с использованием var
из-за языковой функции, называемой поднимая
Кстати, если вы решите объявлять функции с var
, я рекомендую вам сделать это следующим образом:
var foo = function foo() {}
, потому что это дает "имя" функциивместо того, чтобы рассматриваться как анонимная функция, которая поможет с отладкой.Большинство людей не делают этого и заявляют, что используют function
, я полагаю.