Optimización de operaciones repetitivas en JavaScript

A menudo, los programadores principiantes realizan sin pensar la llamada a la misma función varias veces, consumiendo recursos.

Veamos un ejemplo. Supongamos que tenemos una cadena que contiene alguna ruta:

javascriptlet path = 'img.png';

Supongamos que tenemos la tarea de verificar si la ruta termina con la extensión .png o .jpg. Algún programador principiante escribió la siguiente solución:

javascriptlet path = 'img.png';

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

¿Qué está mal con esta solución? El problema es que el método slice se llama dos veces, haciendo lo mismo. Esto, por supuesto, no es óptimo.

Para optimizar, necesita realizar el corte de la cadena una vez, guardar el resultado en una variable y luego usar esta variable más adelante:

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

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

Optimice el siguiente código:

javascriptlet num = 123;

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

Optimice el siguiente código:

javascriptlet date = new Date();

if (date.getDay() === 0 || date.getDay() === 6) {
  console.log('fin de semana');
} else {
  console.log('día laboral');
}
Задание 3

Optimice el siguiente código:

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'el año ' + date.getFullYear() + ' es adecuado';
} else {
  res = 'el año ' + date.getFullYear() + ' no es adecuado';
}

console.log(res)