Optimierung wiederholter Operationen in JavaScript

Oft führen Anfänger unbedacht denselben Funktionsaufruf mehrmals aus und verschwenden Ressourcen.

Schauen wir uns ein Beispiel an. Angenommen, wir haben einen String, der einen bestimmten Pfad enthält:

javascriptlet path = 'img.png';

Angenommen, unsere Aufgabe ist es, zu prüfen, ob der Pfad auf die Erweiterung .png oder .jpg endet. Ein Anfänger könnte die folgende Lösung geschrieben haben:

javascriptlet path = 'img.png';

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

Was ist falsch an dieser Lösung? Das Problem ist, dass die Methode slice zweimal aufgerufen wird und dasselbe tut. Das ist natürlich nicht optimal.

Zur Optimierung muss der Ausschnitt des Strings nur einmal ausgeführt, das Ergebnis in einer Variable gespeichert und diese Variable dann weiterverwendet werden:

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

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

Optimieren Sie den untenstehenden Code:

javascriptlet num = 123;

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

Optimieren Sie den untenstehenden Code:

javascriptlet date = new Date();

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

Optimieren Sie den untenstehenden Code:

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'Jahr ' + date.getFullYear() + ' passt';
} else {
  res = 'Jahr ' + date.getFullYear() + ' passt nicht';
}

console.log(res)