mytest()
объявлено внутри функции ready()
и, следовательно, имеет область действия функции. Поэтому он недоступен извне функции ready
. Ваш тест предполагает, что он имеет глобальную область действия.
Переменные и функции, объявленные в области видимости блока, «поднимаются» в верхнюю часть ближайшей области действия функции или в глобальную область, если она не объявлена внутри функции.
EDIT
В конечном счете, я бы сказал, что код структурирован неправильно. Функция ready предназначена для запуска вещей, которые нужно запускать только тогда, когда документ готов.
Думайте в терминах более строго типизированного языка. Вы бы включили функцию в Page.Load()
или Window.Load()
или Application.Init()
. Нет, вы объявите это на уровне класса и получите к нему доступ таким образом.
Подумайте о своем коде JavaScript таким образом. Если вы хотите уменьшить его область действия, объявите его в другом классе.