Pesastatud funktsioonid JavaScriptis

Oletame, et meil on funktsioon, mis parameetritena võtab kaks numbrit ja tagastab nende numbrite ruutude summa:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction func(num1, num2) {
  function square(num) {
    return num * num;
  }
  
  return square(num1) + square(num2);
}

console.log(square(2)); //!! annab vea
Задание 1

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.