Ismétlődő műveletek optimalizálása JavaScriptben
A kezdő programozók gyakran meggondolatlanul ugyanazon függvényt hívják meg többször, pazarolva az erőforrásokat.
Nézzünk egy példát. Tegyük fel, hogy adott egy sztring, amely egy bizonyos elérési utat tartalmaz:
let path = 'img.png';
Tegyük fel, hogy az a feladatunk, hogy ellenőrizzük,
végződik-e az út a
.png vagy .jpg kiterjesztéssel. Egyes
kezdő programozók a
következő megoldást írták:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Mi a baj ezzel a megoldással? A probléma az,
hogy a slice metódus kétszer hívódik meg,
ugyanazt csinálva. Ez természetesen
nem optimális.
Az optimalizáláshoz egyszer kell végrehajtani a sztring levágását, el kell menteni az eredményt egy változóba, majd ezt a változót kell használni tovább:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimalizálja az alábbi kódot:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimalizálja az alábbi kódot:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimalizálja az alábbi kódot:
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)