Этап 1
Посмотрите на пример функции:
function getHello(){ return "Hello" }
Данная функция просто возвращает строку «Hello«. Мы объявили эту функцию внутри файла программы. Теперь мы можем вызывать эту функцию в любом месте программы.

Мы также можем передавать ссылку на эту функцию для использования в качестве обратного вызова у другой функции.

Всё работает, как и должно работать.
Этап 2
Но давайте представим, что мы объявили ещё одну функцию getPrivet() внутри функции getHello():
function getHello(){ function getPrivet(){ return "Privet" } return "Hello" }
Как думаете. Мы можем обратиться к функции getPrivet() в любом месте программы или нет?

Попытка вызова «внутренней» функции приводит к ошибке. JavaScript говорит нам, что getPrivet не определено. То есть фактически у нас нет доступа к вложенной функции т. к. она не видна всей остальной программе. Внутренняя функция как-будто замкнута внутри своей материнской функции. Как так получается?
Информационные ссылки