Выбор ответа Middle Итераторы и генераторы обновлено
Итерация строки с эмодзи
Вопрос
Что выведет код?
const s = '😀';
console.log(s.length, [...s].length);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 2 1. Строки хранятся в UTF-16.
Варианты ответа
1 12 1правильный ответ2 21 2
Разбор
Строки хранятся в UTF-16. Эмодзи вне базовой плоскости занимает два 16-битных кода (суррогатную пару), и length считает именно их: 2. Итератор строки идёт по кодовым точкам Unicode, поэтому spread даёт один элемент. Для графем из нескольких кодовых точек (флаги, эмодзи с модификаторами) и это не поможет, там нужен Intl.Segmenter.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.