Оптимизация повторных операций в 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('выходной');
} else {
console.log('рабочий');
}
Оптимизируйте приведенный ниже код:
let date = new Date();
let res;
if (date.getFullYear() >= 2020 && date.getFullYear() <= 2030) {
res = 'год ' + date.getFullYear() + ' подходит';
} else {
res = 'год ' + date.getFullYear() + ' не подходит';
}
console.log(res)