Руководство по вложенным функциям JavaScript: определения, использование и примеры

В JavaScript вложенные функции относятся к функциям, которые определены в области действия другой функции. Эти вложенные функции имеют доступ к переменным и параметрам своей родительской функции. Вот некоторые методы и концепции, связанные с вложенными функциями в JavaScript:

  1. Объявление функции: вы можете определить вложенную функцию, используя синтаксис объявления функции внутри другой функции.
function outerFunction() {
  function innerFunction() {
    // code here
  }
}
  1. Выражение функции: вы также можете определить вложенную функцию с помощью функциональных выражений, присвоив анонимную функцию переменной.
function outerFunction() {
  var innerFunction = function() {
    // code here
  };
}
  1. Доступ к переменным. Вложенные функции имеют доступ к переменным и параметрам своей родительской функции. Это известно как лексическая область видимости или замыкание.
function outerFunction() {
  var outerVariable = 'Hello';
  function innerFunction() {
    console.log(outerVariable); // Output: Hello
  }
}
  1. Частные функции. Вложенные функции можно использовать для создания частных функций или инкапсуляции. Поскольку вложенная функция доступна только внутри родительской функции, ее нельзя вызвать извне.
function outerFunction() {
  function innerFunction() {
    // code here
  }
  innerFunction(); // can be called within the parent function
}
innerFunction(); // ReferenceError: innerFunction is not defined
  1. Возвращающие функции. Вложенные функции могут быть возвращены из родительской функции, что позволяет создавать замыкания и поддерживать частные переменные.
function outerFunction() {
  var outerVariable = 'Hello';
  function innerFunction() {
    console.log(outerVariable);
  }
  return innerFunction;
}
var myFunction = outerFunction();
myFunction(); // Output: Hello
  1. Выражения с немедленным вызовом функций (IIFE). Вложенные функции обычно используются в IIFE для создания частной области и предотвращения загрязнения глобального пространства имен.
(function() {
  var variable = 'Hello';
  function innerFunction() {
    console.log(variable);
  }
  innerFunction(); // Output: Hello
})();