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:
let 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:
let 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:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimaliseer de onderstaande code:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimaliseer de onderstaande code:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimaliseer de onderstaande code:
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)