Sisäkkäiset funktiot JavaScriptissä
Oletetaan, että meillä on funktio, joka ottaa parametreinaan kaksi numeroa ja palauttaa näiden numeroiden neliöiden summan:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // tulostaa 13 (tulos 2 * 2 + 3 * 3)
Laitetaan neliöön korotus -operaatio
apufunktioon square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // tulostaa 13
Oletetaan, että olemme varmoja, että funktio square
tulee käyttämään vain funktiossa func
eikä missään muualla.
Tässä tapauksessa olisi kätevää tehdä niin, ettei kukaan vahingossa käytä sitä (te itse tai toinen ohjelmoija, joka työskentelee yhdessä kanssanne).
JavaScriptissä on tyylikäs ratkaisu: voimme
laittaa apufunktion square
func:n sisään. Tällöin
apufunktiomme on saatavilla
vain func:n sisällä, eikä sen ulkopuolella.
Tehdään näin:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // tulostaa 13
Yritys kutsua square func:n ulkopuolelta
aiheuttaa virheen:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! antaa virheen
Tee funktio func, joka parametreina
ottaa kaksi numeroa, ja palauttaa ensimmäisen numeron
neliön ja toisen numeron kuution summan.
Tee tätä varten apufunktio
square, joka nostaa luvun neliöön,
ja apufunktio cube, joka nostaa
luvun kuutioon.