Nästlade funktioner i JavaScript
Låt oss säga att vi har en funktion som tar två tal som parametrar och returnerar summan av kvadraterna av dessa tal:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // skriver ut 13 (resultatet av 2 * 2 + 3 * 3)
Låt oss flytta kvadratoperationen
till en hjälpfunktion square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // skriver ut 13
Låt oss anta att vi är säkra på att funktionen square
kommer att användas endast i funktionen func
och ingen annanstans.
I det fallet vore det bekvämt att se till att ingen av misstag använder den (vare sig du själv eller en annan programmerare som arbetar tillsammans med dig).
JavaScript har en elegant lösning: vi kan
placera vår hjälpfunktion square
inuti func. I det här fallet
kommer vår hjälpfunktion endast att vara tillgänglig
inuti func, men inte utanför.
Låt oss göra så:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // skriver ut 13
Ett försök att anropa square utanför func
kommer att leda till ett fel:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! kommer att ge ett fel
Skapa en funktion func som parametrar
tar två tal, och returnerar summan
av kvadraten på det första talet med kuben av det andra talet.
Skapa för detta en hjälpfunktion
square, som upphöjer ett tal till kvadrat,
och en hjälpfunktion cube, som upphöjer
ett tal till kub.