Pasikartojančių operacijų optimizavimas JavaScript
Dažnai pradedantys programuotojai be galvų iškviečia tą pačią funkciją kelis kartus, eikvodami resursus.
Pažiūrėkime į pavyzdį. Tarkime, mums duota eilutė, kurioje yra kažkoks kelias:
let path = 'img.png';
Tarkime, mes turime užduotį patikrinti,
ar kelias baigiasi plėtiniu
.png ar .jpg. Kažkoks
pradedantis programuotojas parašė
šį sprendimą:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Kas negerai su šiuo sprendimu? Problema ta,
kad metodas slice iškviečiamas du kartus,
darydamas tą patį. Tai, žinoma,
neoptimalu.
Optimizuoti reikia atlikti eilutės nukirpimą vieną kartą, įrašyti rezultatą į kintamąjį, o tada naudoti tą kintamąjį toliau:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimizuokite žemiau pateiktą kodą:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimizuokite žemiau pateiktą kodą:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('savaitgalis');
} else {
console.log('savaitės diena');
}
Optimizuokite žemiau pateiktą kodą:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'metai ' + date.getFullYear() + ' tinka';
} else {
res = 'metai ' + date.getFullYear() + ' netinka';
}
console.log(res)