Вложени функции в 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, повдигаща
число на куб.