Optimasi Operasi Berulang dalam JavaScript

Seringkali programmer pemula tanpa berpikir melakukan pemanggilan fungsi yang sama beberapa kali, menghabiskan sumber daya.

Mari kita lihat sebuah contoh. Misalkan kita diberikan sebuah string, berisi suatu path:

javascriptlet path = 'img.png';

Misalkan tugas kita adalah memeriksa, apakah path berakhiran dengan ekstensi .png atau .jpg. Beberapa programmer pemula menulis solusi berikut:

javascriptlet path = 'img.png';

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

Apa yang salah dengan solusi ini? Masalahnya adalah, method slice dipanggil dua kali, melakukan hal yang sama. Ini, tentu saja, tidak optimal.

Untuk mengoptimalkan, kita perlu melakukan pemotongan string sekali saja, mencatat hasilnya ke dalam variabel, lalu menggunakan variabel ini selanjutnya:

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

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

Optimalkan kode di bawah ini:

javascriptlet num = 123;

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

Optimalkan kode di bawah ini:

javascriptlet date = new Date();

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

Optimalkan kode di bawah ini:

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)