Аптымізацыя паўторных аперацый у JavaScript

Часта пачынаючыя праграмісты бездумна робяць выклік адной і той жа функцыі некалькі разоў, расходуючы рэсурсы.

Давайце паглядзім на прыкладзе. Хай у нас дадзены радок, які змяшчае нейкі шлях:

javascriptlet path = 'img.png';

Хай перад намі стаіць задача праверыць, ці сканчаецца шлях на пашырэнне .png ці .jpg. Нехта пачынаючы праграміст напісаў наступнае рашэнне:

javascriptlet path = 'img.png';

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

Што не так з гэтым рашэннем? Праbleма ў тым, што метад slice выклікаецца два разы, робячы адно і тое ж. Гэта, вядома ж, не аптымальна.

Для аптымізацыі трэба выканаць адрэзанне радка адзін раз, запісаць вынік у зменную, а затым выкарыстоўваць гэтую зменную далей:

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

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

Аптымізуйце прыведзены ніжэй код:

javascriptlet num = 123;

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

Аптымізуйце прыведзены ніжэй код:

javascriptlet date = new Date();

if (date.getDay() === 0 || date.getDay() === 6) {
  console.log('выходны');
} else {
  console.log('працоўны');
}
Задание 3

Аптымізуйце прыведзены ніжэй код:

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'год ' + date.getFullYear() + ' падыходзіць';
} else {
  res = 'год ' + date.getFullYear() + ' не падыходзіць';
}

console.log(res)