Smagu operāciju atkārtošanas optimizācija JavaScript

Iepriekšējā nodarbībā atkārtoti funkciju izsaukumi patiesībā aizņem ļoti maz laika un mūsu optimizācija ietaupīs ne pārāk daudz. Tomēr, viss būs daudz sliktāk, ja mēs vairākas reizes izsauksim "smago" funkciju, kas izpildās pietiekami ilgu laiku.

Pieņemsim, ka mums piemēram, ir funkcija, kas atrod skaitļa dalītājus:

javascriptfunction getDivisorsSum(num) {
  let res = 0;
  
  for (let i = 1; i <= num; i++) {
    if (num % i === 0) {
      res += i;
    }
  }
  
  return res;
}

Acīmredzot, šī funkcija ir pietiekami "smaga". Tāpēc slikta ideja būtu uzrakstīt šādu kodu:

javascriptlet num = 123456;

if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
  console.log('+++');
} else {
  console.log('---');
}

Labāk, protams, izpildīt "smago" operāciju vienu reizi un rezultātu ierakstīt mainīgajā, un tad izmantot šo mainīgo vajadzīgajās vietās:

javascriptlet num = 123456;
let sum = getDivisorsSum(num);

if (sum >= 10 && sum <= 100) {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Optimizējiet zemāk redzamo kodu:

javascriptlet num = 1233456789;

if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) {
  console.log('+++');
} else {
  console.log('---');
}

function getSumSquare(num) {
  let digits = String(num).split('');
  let sum = 0;
  
  for (let digit of digits) {
    sum += digit ** 2;
  }
  
  return sum;
}