НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗jsSpOtRO 270 of 294 menu

Оптимизация повторных операций в 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)
Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить