Geneste functies in JavaScript
Stel we hebben een functie die twee getallen als parameter accepteert en de som van de kwadraten van deze getallen teruggeeft:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // geeft 13 weer (resultaat van 2 * 2 + 3 * 3)
Laten we de bewerking van kwadrateren
uitsluiten
in een hulpfunctie square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // geeft 13 weer
Stel we zijn er zeker van dat de functie square
alleen in de functie func gebruikt zal worden
en nergens anders.
In dat geval zou het handig zijn om te zorgen dat niemand haar per ongeluk gebruikt (jij zelf of een andere programmeur die samen met jou werkt).
In JavaScript is er een elegante oplossing: we
kunnen onze hulpfunctie square
in func plaatsen. In dit geval
zal onze hulpfunctie alleen beschikbaar zijn
binnenin func, en van buitenaf - niet.
Laten we dit doen:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // geeft 13 weer
Een poging om square van buitenaf func aan te roepen
zal leiden tot een fout:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! geeft een foutmelding
Maak een functie func die als parameters
twee getallen accepteert, en de som
van het kwadraat van het eerste getal met de derde macht van het tweede getal teruggeeft.
Maak hiervoor een hulpfunctie
square, die een getal kwadrateert,
en een hulpfunctie cube, die een getal
tot de derde macht verheft.