Ответ 1
Потому что он недоступен в глобальной области. Любая функция, определенная в анонимной функции, передаваемой как аргумент $.ready()
, доступна только в этой функции.
Чтобы достичь того, что вы хотите сделать, вам нужно что-то вроде:
$(document).ready(function(){
function abc() {}
$('#a').on('click',abc);
});
Для получения дополнительной информации о области функций см. эту статью MDN