Optimisation des opérations répétitives en JavaScript

Souvent, les programmeurs débutants appellent sans réfléchir la même fonction plusieurs fois, gaspillant des ressources.

Regardons un exemple. Supposons que nous ayons une chaîne contenant un certain chemin :

javascriptlet path = 'img.png';

Supposons que nous ayons pour tâche de vérifier si le chemin se termine par l'extension .png ou .jpg. Un certain programmeur débutant a écrit la solution suivante :

javascriptlet path = 'img.png';

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

Qu'est-ce qui ne va pas avec cette solution ? Le problème est que la méthode slice est appelée deux fois, faisant la même chose. Ce n'est, bien sûr, pas optimal.

Pour optimiser, il faut effectuer la découpe de la chaîne une seule fois, enregistrer le résultat dans une variable, puis utiliser cette variable ensuite :

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

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

Optimisez le code ci-dessous :

javascriptlet num = 123;

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

Optimisez le code ci-dessous :

javascriptlet date = new Date();

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

Optimisez le code ci-dessous :

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'l\'année ' + date.getFullYear() + ' convient';
} else {
  res = 'l\'année ' + date.getFullYear() + ' ne convient pas';
}

console.log(res)