Optimalisatie van herhalende operaties in JavaScript
Vaak voeren beginnende programmeurs gedachteloos dezelfde functie meerdere keren uit, waardoor resources verspild worden.
Laten we een voorbeeld bekijken. Stel we hebben een string die een pad bevat:
javascriptlet path = 'img.png';
Stel dat onze taak is om te controleren
of het pad eindigt op de extensie
.png of .jpg. Sommige
beginnende programmeurs schreven
de volgende oplossing:
javascriptlet path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Wat is er mis met deze oplossing? Het probleem is
dat de methode slice twee keer wordt aangeroepen,
terwijl het hetzelfde doet. Dit is natuurlijk
niet optimaal.
Voor optimalisatie moet het afknippen van de string één keer worden uitgevoerd, het resultaat in een variabele worden opgeslagen, en vervolgens deze variabele verder gebruiken:
javascriptlet path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimaliseer de onderstaande code:
javascriptlet num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimaliseer de onderstaande code:
javascriptlet date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimaliseer de onderstaande code:
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)