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