JavaScript | Функция объявлена внутри другой функции

JavaScript | Функция объявлена внутри другой функции

Этап 1

Посмотрите на пример функции:

function getHello(){
   return "Hello"
}

Данная функция просто возвращает строку «Hello«. Мы объявили эту функцию внутри файла программы. Теперь мы можем вызывать эту функцию в любом месте программы.

Объявили, вызвали функцию, применили в выражении - JavaScript
Объявили, вызвали функцию, применили в выражении — JavaScript

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

Передали функцию обратного вызова - JavaScript
Передали функцию обратного вызова — JavaScript

Всё работает, как и должно работать.

 

Этап 2

Но давайте представим, что мы объявили ещё одну функцию getPrivet() внутри функции getHello():

function getHello(){
   function getPrivet(){
      return "Privet"
   }
   return "Hello"
}

Как думаете. Мы можем обратиться к функции getPrivet() в любом месте программы или нет?

Функция объявлена внутри другой функции - Не вызывается - JavaScript
Функция объявлена внутри другой функции — Не вызывается — JavaScript

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

 

Информационные ссылки