Найти в Дзене
JS | Разборы, фишки, лайфхаки

JS | Разборы, фишки, лайфхаки

Разбираю полезные и не всегда очевидные JavaScript решения на живых примерах
подборка · 9 материалов
Сервер вернул ошибку, а catch молчит. Что не так с fetch?
Мы обернули запрос в try...catch. Сервер вернул 404. Значит, сейчас выполнится обработка ошибки? Не обязательно. Для fetch() получить ответ «ничего не найдено» и вообще не получить ответ являются разными ситуациями. Предположим, на нашем сайте есть API товаров. Запрашиваем несуществующий товар, и сервер отвечает статусом 404: Путь условный: для повторения примера нужен сервер, который действительно возвращает 404 по этому адресу. В консоли увидим: Сервер сообщил о проблеме. Наш код бодро пошёл дальше...
Что творит этот JavaScript? Старые и новые методы работы с массивами
Представьте: на сайте есть список товаров. Вы хотите показать их по возрастанию цены, создаёте переменную для отсортированного списка и вызываете sort(). А потом выясняется, что исходный порядок тоже изменился. Хотя его вроде никто не трогал. Кроме вашего кода, конечно. Даже объявление через const не помогло. Разберёмся, почему так происходит, чем помогают старые и новые методы массивов и стоит ли использовать их, если у пользователей старые браузеры. Начнём с простого примера: Метод sort() изменяет исходный массив и возвращает ссылку на него...
Почему JavaScript считает ваши заказы в копейках? И это не потому, что он жадный
Вы создали свой интернет-магазин, добавили в корзину два стильных значка — один за 10 копеек (0.1 рубля), другой за 20 копеек (0.2 рубля). Покупатель переходит к оплате, ждет законные 30 копеек, но JavaScript выдает в чеке: 0.30000000000000004 рубля. Откуда взялся этот непонятный нано-хвост? Неужели язык программирования пытается вас обокрасть? Спойлер: нет, JS не жадный. У него просто своя, очень специфическая логика расчета. Давайте разберемся, почему все нормальные разработчики считают деньги на сайтах в целых числах, и как это спасает бизнес от кассовых разрывов...
Почему твоя форма регистрации бесит пользователей и как это исправить
Пользователь придумал пароль, нажал «Создать аккаунт» и получил ошибку: «Добавьте заглавную букву». Исправил, попробовал снова: «Теперь нужен специальный символ». Почему нельзя было показать все требования заранее? Сделаем форму, которая помогает прямо во время ввода. Проверим длину пароля, заглавную и строчную буквы, цифру и спецсимвол. В этом примере пароль должен содержать минимум 12 символов, латинские буквы обоих регистров, цифру и один из перечисленных спецсимволов. Это демонстрационные требования, а не универсальный рецепт безопасного пароля...
Как вычислить разницу между датами в JavaScript: дни, часы, минуты и секунды
Сколько времени осталось до события? Как долго выполнялась задача? Сколько прошло между двумя записями? JavaScript позволяет вычислить такую разницу без дополнительных библиотек. Главное — понять, что именно мы считаем: длительность между двумя моментами времени, которую затем раскладываем на сутки, часы, минуты и секунды. Возьмём начало 1 января и 20 февраля, но добавим время, чтобы результат получился наглядным: Здесь T отделяет дату от времени, а Z означает UTC — нулевое смещение часового пояса...
Сортировка поставила сто раньше двадцати. JavaScript сломался?
Представьте: у вас есть массив чисел, который нужно отсортировать по возрастанию. Вы вызываете метод sort() и ожидаете увидеть сначала маленькие числа, затем большие. Но результат выглядит странно: Сто оказалось раньше двадцати, а тройка переместилась в конец. Ошибка JavaScript? Нет. Просто сортировка по умолчанию работает не так, как можно предположить. Разберём причину и исправление по шагам. Почему получается такой порядок Если вызвать sort() без аргументов, для сравнения элементы преобразуются в строки...