Книга: JavaScript. Подробное руководство, 6-е издание
8.1.1. Вложенные функции
8.1.1. Вложенные функции
В JavaScript допускается вложение определений функций в другие функции. Например:
function hypotenuse(a, b) {
function square(x) { return x*x; }
return Math.sqrt(square(a) + square(b));
}
Особый интерес во вложенных функциях представляют правила видимости переменных: они могут обращаться к параметрам и переменным, объявленным во вмещающей функции (или функциях). Например, в определении выше внутренняя функция square()
может читать и изменять параметры а и Ь, объявленные во внешней функции hypotenuse().
Эти правила видимости, действующие для вложенных функций, играют важную роль, и мы еще вернемся к ним в разделе 8.6.
Как отмечалось в разделе 5.3.2, инструкции объявления функций в действительности не являются настоящими инструкциями, и спецификация ECMAScript допускает использовать их только в программном коде верхнего уровня. Они могут появляться в глобальном программном коде или внутри других функций, но они не могут находиться внутри циклов, условных инструкций, инструкций try/catch/finally
или with.[11] Обратите внимание, что эти ограничения распространяются только на объявления функций в виде инструкции function
. Выражения определения функций могут присутствовать в любом месте в программе на языке JavaScript.
- Функции как значения
- Определение функции
- Вложенные наборы
- 7.4. Вложенные условные операторы if
- Вложенные области видимости
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- Математические функции
- Размытые функции
- 7.3. Финансовые функции
- 4.3. Логические функции и таблицы истинности