Optimizarea operațiilor repetate în JavaScript
Deseori, programatorii începători efectuează fără gândire apelarea aceleiași funcții de mai multe ori, consumând resurse.
Să ne uităm la un exemplu. Să presupunem că avem un șir care conține o anumită cale:
let path = 'img.png';
Să presupunem că sarcina noastră este să verificăm
dacă calea se termină cu extensia
.png sau .jpg. Un
programator începător ar putea scrie
următoarea soluție:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Ce nu este în regulă cu această soluție? Problema este
că metoda slice este apelată de două ori,
făcând același lucru. Acest lucru, desigur,
nu este optim.
Pentru optimizare, este necesar să tăiați șirul o singură dată, să înregistrați rezultatul într-o variabilă și apoi să utilizați această variabilă mai departe:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimizați codul de mai jos:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimizați codul de mai jos:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimizați codul de mai jos:
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)