Pesastatud funktsioonid JavaScriptis
Oletame, et meil on funktsioon, mis parameetritena võtab kaks numbrit ja tagastab nende numbrite ruutude summa:
function func(num1, num2) {
return num1 * num1 + num2 * num2;
}
console.log(func(2, 3)); // väljastab 13 (tulemus 2 * 2 + 3 * 3)
Võtame ruutu tõstmise operatsiooni välja
abifunktsiooni square:
function square(num) {
return num * num;
}
function func(num1, num2) {
return square(num1) + square(num2);
}
console.log(func(2, 3)); // väljastab 13
Oletame, et oleme kindlad, et funktsiooni square
kasutatakse ainult funktsioonis func
ja mitte üheski teises.
Sel juhul oleks mugav teha nii, et keegi ei saaks seda kogemata kasutada (teie ise või teine programmeerija, kes töötab koos teiega).
JavaScriptis on elegantne lahendus: saame
oma abifunktsiooni square
paigutada func sisse. Sel juhul
on meie abifunktsioon kättesaadav
ainult func sees, aga väljaspool - mitte.
Teeme selle:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(func(2, 3)); // väljastab 13
Katse kutsuda square väljaspool func
põhjustab vea:
function func(num1, num2) {
function square(num) {
return num * num;
}
return square(num1) + square(num2);
}
console.log(square(2)); //!! annab vea
Tehke funktsioon func, mis parameetritena
võtab kaks numbrit, ja tagastab esimese numbri ruudu
summa teise numbri kuubiga.
Tehke selleks abifunktsioon
square, mis tõstab numbri ruutu,
ja abifunktsioon cube, mis tõstab
numbri kuupi.