# Вложенные функции в JavaScript

Пусть у нас есть функция, параметром принимающая два числа и возвращающая сумму квадратов этих чисел:

`function func(num1, num2) { return num1 * num1 + num2 * num2; } console.log(func(2, 3)); // выведет 13 (результат 2 * 2 + 3 * 3)`

Давайте операцию возведения в квадрат вынесем в вспомогательную функцию `square`:

`function square(num) { return num * num; } function func(num1, num2) { return square(num1) + square(num2); } console.log(func(2, 3)); // выведет 13`

Пусть мы уверены, что функция `square` будет использоваться только в функции `func` и больше ни в какой другой.

В этом случае было бы удобно сделать так, чтобы ее никто случайно не использовал (вы сами или другой программист, работающий вместе с вами).

В JavaScript есть изящное решение: можно нашу вспомогательную функцию `square` поместить вовнутрь `func`. В этом случае наша вспомогательная функция будет доступна только внутри `func`, а снаружи - не будет.

Сделаем это:

`function func(num1, num2) { function square(num) { return num * num; } return square(num1) + square(num2); } console.log(func(2, 3)); // выведет 13`

Попытка вызвать `square` снаружи `func` приведет к ошибке:

`function func(num1, num2) { function square(num) { return num * num; } return square(num1) + square(num2); } console.log(square(2)); //!! выдаст ошибку`

Сделайте функцию `func`, которая параметрами будет принимать два числа, а возвращать сумму квадрата первого числа с кубом второго числа. Сделайте для этого вспомогательную функцию `square`, возводящую число в квадрат, и вспомогательную функцию `cube`, возводящую число в куб.

← →
↑
en ru