Indlejrede funktioner i JavaScript
Lad os sige, at vi har en funktion, der som parametre tager to tal og returnerer summen af kvadraterne af disse tal:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // udskriver 13 (resultatet af 2 * 2 + 3 * 3)
Lad os udskille kvadratoperationen
i en hjælpefunktion square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // udskriver 13
Lad os antage, at vi er sikre på, at funktionen square
kun vil blive brugt i funktionen func
og ikke i nogen andre.
I dette tilfælde ville det være praktisk at sikre, at ingen ved et uheld bruger den (det kunne være dig selv eller en anden programmør, der arbejder sammen med dig).
JavaScript har en elegant løsning: vi kan
placere vores hjælpefunktion square
inde i func. På denne måde
vil vores hjælpefunktion kun være tilgængelig
inde i func, men ikke udefra.
Lad os gøre dette:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // udskriver 13
Et forsøg på at kalde square udefra func
vil føre til en fejl:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! vil give en fejl
Lav en funktion func, som parametre
vil tage to tal og returnere summen
af kvadratet af det første tal med terningen af det andet tal.
Lav til dette en hjælpefunktion
square, som opløfter et tal i anden potens,
og en hjælpefunktion cube, som opløfter
et tal i tredje potens.