⊗jsSpOtRHO 271 of 294 menu

Оптимизация на повторението на тежки операции в JavaScript

В предишния урок повторните извиквания на функции всъщност отнемат много малко време и нашата оптимизация ще спести не много. Въпреки това, всичко ще бъде много по-лошо, ако няколко пъти извикаме "тежка" функция, която се изпълнява доста дълго време.

Нека, например, имаме функция, която намира делителите на число:

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

Очевидно е, че тази функция е доста "тежка". Следователно лоша идея би било да се напише такъв код:

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

По-добре, разбира се, е да се извърши "тежката" операция веднъж и резултатът да се запише в променлива, а след това да се използва тази променлива на нужните места:

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

Оптимизирайте дадения по-долу код:

let 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; }
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне