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:
javascriptlet 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:
javascriptlet 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:
javascriptlet path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Optimera koden nedan:
javascriptlet num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Задание 2
Optimera koden nedan:
javascriptlet date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Задание 3
Optimera koden nedan:
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)