Optimizacija ponavljajočih operacij v JavaScript
Pogosto začetni programerji nepremišljeno kličejo isto funkcijo večkrat in porabljajo vire.
Poglejmo si primer. Naj bo podana niz, ki vsebuje neko pot:
let path = 'img.png';
Naj bo naša naloga preveriti,
ali se pot konča s končnico
.png ali .jpg. Nekateri
začetni programer je napisal
naslednjo rešitev:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Kaj je narobe s to rešitvijo? Težava je v tem,
da se metoda slice pokliče dvakrat,
pri čemer naredi isto stvar. To seveda
ni optimalno.
Za optimizacijo je treba izrezati niz enkrat, zapisati rezultat v spremenljivko in nato uporabiti to spremenljivko naprej:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimizirajte spodnjo kodo:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimizirajte spodnjo kodo:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimizirajte spodnjo kodo:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'leto ' + date.getFullYear() + ' se ujema';
} else {
res = 'leto ' + date.getFullYear() + ' se ne ujema';
}
console.log(res)