Оптимизация на повторните операции в JavaScript
Често начинаещите програмисти безмислено извикват една и съща функция няколко пъти, разхищавайки ресурси.
Нека разгледаме пример. Нека имаме даден низ, съдържащ някакъв път:
let path = 'img.png';
Нека задачата ни е да проверим
дали пътят завършва на разширение
.png или .jpg. Някой
начинаещ програмист е написал
следното решение:
let path = 'img.png';
if (path.slice(-4) === '.png' || path.slice(-4) === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Какво не е наред с това решение? Проблемът е,
че методът slice се извиква два пъти,
правейки едно и също нещо. Това, разбира се,
не е оптимално.
За оптимизация трябва да извършим отрязването на низа веднъж, да запишем резултата в променлива и след това да използваме тази променлива:
let path = 'img.png';
let ext = path.slice(-4);
if (ext === '.png' || ext === '.jpg') {
console.log('+++');
} else {
console.log('---');
}
Оптимизирайте дадения по-долу код:
let num = 123;
if (String(num)[0] === '1' || String(num)[0] === '2') {
console.log('+++');
} else {
console.log('---');
}
Оптимизирайте дадения по-долу код:
let date = new Date();
if (date.getDay() === 0 || date.getDay() === 6) {
console.log('weekend');
} else {
console.log('weekday');
}
Оптимизирайте дадения по-долу код:
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)