JavaScript-də Təkrarlanan Əməliyyatların Optimallaşdırılması

Tez-tez başlayan proqramçılar düşünmədən eyni funksiyanı bir neçə dəfə çağıraraq resursları israf edirlər.

Gəlin bir nümunəyə baxaq. Tutaq ki, bizə müəyyən bir yolu ehtiva edən bir sətir verilib:

javascriptlet path = 'img.png';

Tutaq ki, qarşımızda yolun .png və ya .jpg genişlənməsi ilə bitib-bitmədiyini yoxlamaq vəzifəsi durur. Bəzi başlayan proqramçı aşağıdakı həlli yazıb:

javascriptlet path = 'img.png';

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

Bu həlldə nə səhvdir? Problem ondadır ki, slice metodu eyni şeyi edərək iki dəfə çağırılır. Bu, əlbəttə ki, optimal deyil.

Optimallaşdırmaq üçün sətirin kəsmə əməliyyatını bir dəfə yerinə yetirmək, nəticəni dəyişəndə yazmaq, sonra isə bu dəyişəni bundan sonra istifadə etmək lazımdır:

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

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

Aşağıdakı kodu optimallaşdırın:

javascriptlet num = 123;

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

Aşağıdakı kodu optimallaşdırın:

javascriptlet date = new Date();

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

Aşağıdakı kodu optimallaşdırın:

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'il ' + date.getFullYear() + ' uyğundur';
} else {
  res = 'il ' + date.getFullYear() + ' uyğun deyil';
}

console.log(res)