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:
let 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:
let 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:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimumkan kod di bawah:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimumkan kod di bawah:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimumkan kod di bawah:
let 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)