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('демалыс');
} 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)