JavaScriptда ички функциялар

Фараз қилайлик, бизда иккита сонни параметр сифатида қабул қиладиган ва у сонларнинг квадратлари йиғиндисини қайтарадиган функция мавжуд:

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

console.log(func(2, 3)); // 13ни чиқаради (2 * 2 + 3 * 3 натижаси)

Келинг, квадратга ошиш амалиётини square ёрдамчи функциясига олиб чиқайлик:

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

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

console.log(func(2, 3)); // 13ни чиқаради

Фараз қилайлик, биз square функцияси фақат func функциясида ишлатилишига ва бошқа ҳеч қаерда ишлатилмаслигига ишонамиз.

Бундай ҳолда уни ҳеч ким тасодифан ишлатмаслиги (ўзингиз ёки сиз билан бирга ишлайдиган бошқа программист) қулай бўлар эди.

JavaScriptда чиройли ечим мавжуд: биз square ёрдамчи функциямизни func ичига joylashtirishimiz мумкин. Бунда ёрдамчи функция фақат func ичидагина доступли бўлади, ташқарида - бўлмайди.

Бунни амалга оширамиз:

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

console.log(func(2, 3)); // 13ни чиқаради

square ни func ташқарисидан чақирганга уриниш хатоликка олиб келади:

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

console.log(square(2)); //!! хатолик берadi
Задание 1

func функциясини ясанг, у параметр сифатида иккита сонни қабул қилсин, биринчи соннинг квадрати иккинчи соннинг куби билан йиғиндисини қайтарсин. Бунинг учун сонни квадратга оширадиган square ёрдамчи функцияси ва сонни кубга оширадиган cube ёрдамчи функциясини ясанг.