Sisäkkäiset funktiot JavaScriptissä

Oletetaan, että meillä on funktio, joka ottaa parametreinaan kaksi numeroa ja palauttaa näiden numeroiden neliöiden summan:

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

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

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

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

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

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.