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('---');
}

Бул чечимде эмне туура эмес? Көйгөй мында, 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('weekend');
} else {
  console.log('weekday');
}
Задание 3

Төмөндө берилген кодду оптималдаштырыңыз:

javascriptlet date = new Date();
let res;

if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
  res = 'year ' + date.getFullYear() + ' fits';
} else {
  res = 'year ' + date.getFullYear() + ' doesn't fit';
}

console.log(res)