Стандартная бибилиотка: даты и боль
В новом JS появилась функция форматирования даты в локаль-зависимом виде.
Это простой способ показать дату в привычном пользователю формате. При вызове без параметров локаль подтянеться из среды выполнения.
Использовать в Node.js эту функцию нужно осторожно (например при отправке писем пользователям). Если не указать локаль, то будет использована локаль сервера, она часто не совпадает с локалью пользователей.
На MDN есть неплохая статья про эту функцию.
#stdlib
В новом JS появилась функция форматирования даты в локаль-зависимом виде.
Это простой способ показать дату в привычном пользователю формате. При вызове без параметров локаль подтянеться из среды выполнения.
Использовать в Node.js эту функцию нужно осторожно (например при отправке писем пользователям). Если не указать локаль, то будет использована локаль сервера, она часто не совпадает с локалью пользователей.
На MDN есть неплохая статья про эту функцию.
#stdlib
Стандартная бибилиотка: это массив
Узнать, является ли нечто массивом не так просто, как кажется.
Если код выполняется в среде поддерживающей ES5+ (или транспайлится), то доступна функция
Я страстно люблю lodash, но всему свое место и время.
#stdlib
Узнать, является ли нечто массивом не так просто, как кажется.
typeof
вернет object
, а многие свойства массивов присущи и другим объектам.Если код выполняется в среде поддерживающей ES5+ (или транспайлится), то доступна функция
Array.isArray
которая проверяет, евляется ли аргумент массивом. В таком случае можно выкинуть _.isArray
и пользоваться стандартной бибилиотекой.Я страстно люблю lodash, но всему свое место и время.
#stdlib
Стандартная бибилиотка: юникодные строки
При обработке пользовательского ввода часто приходится сравнивать его значение с референсом. При наивном сравнении легко допустить ошибку из-за возможности модификации символов в UNICODE.
В типографике используются диакритические знаки для модификации символов.
Для реализации таких изменений в UNICODE предоставили возможность композиции символов.
Сравнение таких символов через === в JavaScript даст false, поэтому для облегчения жизни существует метод
Статья на Medium
#stdlib
При обработке пользовательского ввода часто приходится сравнивать его значение с референсом. При наивном сравнении легко допустить ошибку из-за возможности модификации символов в UNICODE.
В типографике используются диакритические знаки для модификации символов.
Для реализации таких изменений в UNICODE предоставили возможность композиции символов.
Сравнение таких символов через === в JavaScript даст false, поэтому для облегчения жизни существует метод
String.prototype.normalize()
, который возвращает нормализованную строку.Статья на Medium
#stdlib
Стандартная бибилиотка: состояние регулярки
На первый взгляд кажется, что регулярные выражения не могут хранить в себе состояние. Это не так.
Функции
Обойти это можно через свойство
Если поиск ничего не нашел, это свойство автоматически сбрасывается на 0.
#stdlib
На первый взгляд кажется, что регулярные выражения не могут хранить в себе состояние. Это не так.
Функции
test
и exec
начинают проверять строку с последнего совпадения, если регулярное выражение имеет флаг global
(g
).Обойти это можно через свойство
lastIndex
. Нужно установить его на 0
и поиск начнется снова с начала строки.Если поиск ничего не нашел, это свойство автоматически сбрасывается на 0.
#stdlib
Последние три поста рассказывали про итераторы. Использовать в жизни те решения, что в них рассматривались нельзя. Но не из-за итераторов, из-за изменения прототипа числа. Ниже прикреплен код аналогичного решения без грязи.
Итератор
Итерируемыми назвают объекты которые можно "перебирать". Например, массив — итерируемый объект. И список DOM-узлов, строки,
Многие встроенные в JS штуки (for-of, srepad-оператор) работают с любым итерируемым объектом. Это позволяет подсовывать им свои реализации, получать выразительный и простой код.
Статья на MDN — The iterable protocol
#stdlib
Итератор
Итерируемыми назвают объекты которые можно "перебирать". Например, массив — итерируемый объект. И список DOM-узлов, строки,
Map
, Set
и arguments
тоже.Многие встроенные в JS штуки (for-of, srepad-оператор) работают с любым итерируемым объектом. Это позволяет подсовывать им свои реализации, получать выразительный и простой код.
Статья на MDN — The iterable protocol
#stdlib