Один элемент в строке JavaScript считается одним блоком кода UTF-16. То есть строковые символы хранятся в 16-битном формате (1 единица кода), а 16-битный равен 2 байтам (8-битный = 1 байт).
Метод charCodeAt()
может использоваться для возврата целого числа от 0 до 65535, представляющего кодовую единицу UTF-16 с заданным индексом.
codePointAt()
может использоваться для возврата всего значения кодовой точки для символов Юникода, например, UTF-32.
Когда символ UTF-16 не может быть представлен в одной 16-битной кодовой единице, он будет иметь суррогатную пару и поэтому будет использовать две кодовые единицы (2 x 16-бит = 4 байта)
См. Unicode-кодировки для различных кодировок и их диапазонов кодов.