JavaScript-те ауыр операцияларды қайталауды оңтайландыру
Алдыңғы сабақта функцияларды қайта шақыру шынымен де өте аз уақыт алады және біздің оңтайландырумыз өте көп үнемдемейді. Дегенмен, біз бірнеше рет орындау ұзақ уақытты алатын "ауыр" функцияны шақырсақ, жағдай әлдеқайда нашар болады.
Мысалы, бізде санның бөлгіштерін табатын функция бар делік:
javascriptfunction getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Бұл функцияның жеткілікті "ауыр" екені анық. Сондықтан мынадай код жазу нашар идея болады:
javascriptlet num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Әрине, "ауыр" операцияны бір рет орындап, нәтижені айнымалыға жазып қойған, содан кейін сол айнымалыны қажетті жерлерде пайдаланған әлдеқайда жақсы:
javascriptlet num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Төмендегі кодты оңтайландырыңыз:
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;
}