Optimering van Herhalende Operasies in JavaScript

Vaak begin programmeerders gedagteloos 'n dieselfde funksie verskeie kere aanroep, wat hulpbronne vermors.

Kom ons kyk na 'n voorbeeld. Gestel ons het 'n string wat 'n sekere pad bevat:

javascriptlet path = 'img.png';

Gestel ons taak is om te kontroleer of die pad eindig met die uitbreiding .png of .jpg. Sommige beginnende programmeerder het die volgende oplossing geskryf:

javascriptlet path = 'img.png';

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

Wat is verkeerd met hierdie oplossing? Die probleem is dat die metode slice twee keer aangeroep word, wat presies dieselfde doen. Dit is natuurlik nie optimaal nie.

Om te optimiseer moet jy die afsnyding van die string slegs een keer uitvoer, die resultaat in 'n veranderlike stoor, en dan hierdie veranderlike verder gebruik:

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

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

Optimeer die onderstaande kode:

javascriptlet num = 123;

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

Optimeer die onderstaande kode:

javascriptlet date = new Date();

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

Optimeer die onderstaande kode:

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)