Optimalisatie van herhalende operaties in JavaScript

Vaak voeren beginnende programmeurs gedachteloos dezelfde functie meerdere keren uit, waardoor resources verspild worden.

Laten we een voorbeeld bekijken. Stel we hebben een string die een pad bevat:

javascriptlet path = 'img.png';

Stel dat onze taak is om te controleren of het pad eindigt op de extensie .png of .jpg. Sommige beginnende programmeurs schreven de volgende oplossing:

javascriptlet path = 'img.png';

if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
  console.log('+++');
} else {
  console.log('---');
}

Wat is er mis met deze oplossing? Het probleem is dat de methode slice twee keer wordt aangeroepen, terwijl het hetzelfde doet. Dit is natuurlijk niet optimaal.

Voor optimalisatie moet het afknippen van de string één keer worden uitgevoerd, het resultaat in een variabele worden opgeslagen, en vervolgens deze variabele verder gebruiken:

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

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

Optimaliseer de onderstaande code:

javascriptlet num = 123;

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

Optimaliseer de onderstaande code:

javascriptlet date = new Date();

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

Optimaliseer de onderstaande code:

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)