Há outra maneira de declarar sua função em uma variável como esta:
test = function() {
alert("test");
}
jsFiddle
Detalhes
EDIT (com base nos comentários de @nnnnnn)
@nnnnnn:
por que dizer test =
(sem var
) resolveria isso?
Quando você define uma função como esta:
var test = function(){};
A função é definida localmente, mas quando você define sua função sem var
:
test = function(){};
test
é definido no window
objeto que está no escopo de nível superior.
porque isso funciona?
Como @zalun, diga:
Se você não especificar a configuração de wrap, o padrão é "onLoad". Isso faz com que todo o JavaScript seja agrupado em uma função executada após o carregamento do resultado. Todas as variáveis são locais para esta função, portanto, indisponíveis no escopo global.
Mas se você usar esta sintaxe:
test = function(){};
Você tem acesso à função test
porque ela é definida globalmente
Referências :