JavaScript-de iç-içe funksiýalar

Bizde iki san parametr hökmünde kabul edýän we şol sanlaryň kwadratlarynyň jemyny yzyna gaýtaryan funksiýa bar diýeliň:

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

console.log(func(2, 3)); // 13 çykaryar (2 * 2 + 3 * 3 netijesi)

Geliň, kwadrat derejä götermek amalyny square ýardamçy funksiýasyna çykaryň:

javascriptfunction square(num) {
  return num * num;
}

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

console.log(func(2, 3)); // 13 çykaryar

Farz edeliň, square funksiýasy diňe func funksiýasynda ulanyljak we başga hiç ýerde ulanylmaýakdyr.

Bu ýagdaýda, ony hiç kimňeň düýşüňsiz ulanmazlygy (özüňiz ýa-da siziň bilen işleýän beýleki programmist) üçin amatly bolar.

JavaScript-de gözel çözüm bar: biz ýardamçy square funksiýamyzy func-iň içine ýerleşdirip bileris. Bu ýagda biziň ýardamçy funksiýamyz diňe func-iň içinde elýeterli bolar, daşynda bolsa - bolmaz.

Muny ýerine ýetireliň:

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

console.log(func(2, 3)); // 13 çykaryar

square funksiýasyny func funksiýasynyň daşyndan çagyrmaga synanyşyk ýalňyşlyga getirer:

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

console.log(square(2)); //!! ýalňyşlyk berer
Задание 1

func funksiýasyny ýasalyň, bu funksiýa parametr hökmünde iki san alyp, birinji sanyň kwadraty bilen ikinji sanyň kubunyň jemiň gaýtarmalydyr. Bunuň üçin bir san kwadrat derejä götermek üçin square ýardamçy funksiýasyny we bir san kub derejä götermek üçin cube ýardamçy funksiýasyny ýasalyň.