Є й інший спосіб, оголосити свою функцію такою змінною:
test = function() {
alert("test");
}
jsFiddle
Деталі
EDIT (на основі коментарів @nnnnnn)
@nnnnnn:
чому б сказати test =
(без var
) це виправить?
Коли ви визначаєте функцію, як це:
var test = function(){};
Функція визначається локально, але коли ви визначаєте свою функцію без var
:
test = function(){};
test
визначається на window
об'єкті, що знаходиться на найвищому рівні.
чому це працює?
Як @zalun кажуть:
Якщо не вказати параметр обтікання, він за замовчуванням має значення "onLoad". Це призводить до того, що весь JavaScript буде завернуто в функцію, запущену після завантаження результату. Всі змінні є локальними для цієї функції, тому недоступні в глобальній області.
Але якщо ви використовуєте цей синтаксис:
test = function(){};
У вас є доступ до функції, test
оскільки вона визначена в усьому світі
Список літератури: