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:

javascriptlet 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:

javascriptlet 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:

javascriptlet path = 'img.png';
let ext  = path.slice(-4);

if (ext === '.png' || ext === '.jpg') {
  console.log('+++');
} else {
  console.log('---');
}
Задание 1

Optimizirajte spodnjo kodo:

javascriptlet num = 123;

if (String(num)[0] === '1' || String(num)[0] === '2') {
  console.log('+++');
} else {
  console.log('---');
}
Задание 2

Optimizirajte spodnjo kodo:

javascriptlet date = new Date();

if (date.getDay() === 0 || date.getDay() === 6) {
  console.log('weekend');
} else {
  console.log('weekday');
}
Задание 3

Optimizirajte spodnjo kodo:

javascriptlet 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)