Optimering av upprepade operationer i JavaScript
Ofta gör nybörjarprogrammerare blint anrop till samma funktion flera gånger, vilket slösar på resurser.
Låt oss titta på ett exempel. Låt oss säga att vi har en sträng som innehåller en viss sökväg:
let path = 'img.png';
Låt oss säga att vår uppgift är att kontrollera
om sökvägen slutar på filtillägget
.png eller .jpg. En del
nybörjarprogrammerare skrev
följande lösning:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Vad är fel med denna lösning? Problemet är
att metoden slice anropas två gånger,
och gör samma sak. Detta är naturligtvis
inte optimalt.
För att optimera behöver du klippa av strängen en gång, spara resultatet i en variabel, och sedan använda den variabeln vidare:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Optimera koden nedan:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Optimera koden nedan:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Optimera koden nedan:
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)