Optimizacija ponovnih operacija u JavaScript-u
Početnici u programiranju često nepromišljeno pozivaju istu funkciju više puta, trošeći resurse.
Pogledajmo na primeru. Neka nam je data putanja:
javascriptlet path = 'img.png';
Zadatak je da proverimo
da li putanja završava sa ekstenzijom
.png ili .jpg. Neki
početnik bi napisao
ovo rešenje:
javascriptlet path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Šta nije u redu sa ovim rešenjem? Problem je
što se metod slice poziva dva puta,
radeći istu stvar. To, naravno,
nije optimalno.
Za optimizaciju je potrebno da se odseče deo stringa samo jednom, sačuva rezultat u promenljivu, a zatim koristi tu promenljivu dalje:
javascriptlet path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Optimizujte donji kod:
javascriptlet num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Задание 2
Optimizujte donji kod:
javascriptlet date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Задание 3
Optimizujte donji kod:
javascriptlet 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)