Есть другой способ объявить вашу функцию в переменной, например:
test = function() {
alert("test");
}
jsFiddle
подробности
ИЗМЕНИТЬ (на основе комментариев @nnnnnn)
@nnnnnn:
почему высказывание test =(без var) исправит это?
Когда вы определяете такую функцию:
var test = function(){};
Функция определяется локально, но когда вы определяете свою функцию без var:
test = function(){};
testопределяется на windowобъекте, который находится в области действия верхнего уровня.
почему это работает?
Как сказал @zalun:
Если вы не укажете настройку обтекания, по умолчанию будет установлено значение «onLoad». В результате весь JavaScript включается в функцию, запускаемую после загрузки результата. Все переменные являются локальными для этой функции, поэтому недоступны в глобальной области видимости.
Но если вы используете этот синтаксис:
test = function(){};
У вас есть доступ к функции, testпотому что она определена глобально
Ссылки :