Вложенные функции в 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, возводящую число в куб.

enru