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:
let 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:
let 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:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimizujte donji kod:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimizujte donji kod:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimizujte donji kod:
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)