❗️JavaScript: Почему length врёт про эмодзи
Столкнулся с тем, что функция подсчёта символов в JavaScript работала на тестах за миллисекунды, а на реальном файле зависала на минуту? Оказалось, стандартный length считает не символы, а кодовые единицы UTF-16.
Полезный разбор для фронтендеров, которые работают с юникодом и хотят избежать неожиданных тормозов в продакшене
🔥Ссылка на статью
Заметки Фронтендера & Max
Столкнулся с тем, что функция подсчёта символов в JavaScript работала на тестах за миллисекунды, а на реальном файле зависала на минуту? Оказалось, стандартный length считает не символы, а кодовые единицы UTF-16.
Проблема: "👋".length возвращает 2 вместо 1, "🇺🇿".length — 4 вместо 1. Это ломает обрезку строк через slice() и приводит к ромбам с вопросиками. Решение — честная функция обхода строки с проверкой суррогатных пар, но она может замедлить код в 60 раз на больших текстах.
Полезный разбор для фронтендеров, которые работают с юникодом и хотят избежать неожиданных тормозов в продакшене
🔥Ссылка на статью
Заметки Фронтендера & Max