Atkārtotu operāciju optimizēšana JavaScript
Bieži vien iesācēji programmētāji bezdomīgi veic viena un tā paša funkcijas izsaukumu vairākas reizes, iztērējot resursus.
Apskatīsim piemērā. Pieņemsim, ka mums ir dota virkne, kas satur kādu ceļu:
let path = 'img.png';
Pieņemsim, ka mūsu uzdevums ir pārbaudīt,
vai ceļš beidzas ar paplašinājumu
.png vai .jpg. Kāds
iesācējs programmētājs uzrakstīja
šādu risinājumu:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Kas nav kārtībā ar šo risinājumu? Problēma ir tā,
ka metode slice tiek izsaukta divas reizes,
dara to pašu. Tas, protams,
nav optimāli.
Lai optimizētu, nepieciešams veikt virknes atgriešanu vienu reizi, ierakstīt rezultātu mainīgajā un pēc tam izmantot šo mainīgo tālāk:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimizējiet zemāk redzamo kodu:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimizējiet zemāk redzamo kodu:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimizējiet zemāk redzamo kodu:
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)