Pengoptimuman Operasi Berulang dalam JavaScript

Sering kali pengaturcara baru tanpa sedar memanggil fungsi yang sama beberapa kali, menghabiskan sumber.

Mari kita lihat contoh. Katakan kita diberi satu rentetan yang mengandungi beberapa laluan:

javascriptlet path = 'img.png';

Katakan tugas kita adalah untuk menyemak sama ada laluan tersebut berakhir dengan sambungan .png atau .jpg. Beberapa pengaturcara baru menulis penyelesaian berikut:

javascriptlet path = 'img.png';

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

Apakah masalah dengan penyelesaian ini? Masalahnya ialah kaedah slice dipanggil dua kali, menjalankan perkara yang sama. Ini sudah tentu tidak optimum.

Untuk pengoptimuman, potongan rentetan perlu dilakukan sekali, simpan hasilnya ke dalam pembolehubah, dan kemudian gunakan pembolehubah tersebut seterusnya:

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

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

Optimumkan kod di bawah:

javascriptlet num = 123;

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

Optimumkan kod di bawah:

javascriptlet date = new Date();

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

Optimumkan kod di bawah:

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)