Optimalizácia opakujúcich sa operácií v JavaScripte
Začiatoční programátori často bezmyšlienkovite volajú tú istú funkciu niekoľkokrát, čím míňajú zdroje.
Pozrime sa na príklad. Nech je daný reťazec, ktorý obsahuje nejakú cestu:
let path = 'img.png';
Predpokladajme, že máme za úlohu skontrolovať,
či cesta končí na príponu
.png alebo .jpg. Nejaký
začiatočník programátor napísal
nasledujúce riešenie:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Čo je zlé na tomto riešení? Problém je,
že metóda slice je volaná dvakrát,
pričom robí to isté. To, samozrejme,
nie je optimálne.
Pre optimalizáciu je potrebné vykonať odrezanie reťazca raz, uložiť výsledok do premennej a potom použiť túto premennú ďalej:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimalizujte nižšie uvedený kód:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimalizujte nižšie uvedený kód:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimalizujte nižšie uvedený kód:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'year ' + date.getFullYear() + ' fits';
} else {
res = 'year ' + date.getFullYear() + ' doesn't fit';
}
console.log(res)