Это было введено в ES2015 для обработки символов Юникода, которые не могут быть представлены одной 16-разрядной единицей Юникода, но вместо этого требуется 2.
Используя charCodeAt() вам нужно извлечь первый и второй и объединить их. Используя codePointAt() , вы получаете весь символ за один вызов.
Например, этот китайский иероглиф “ஷ” состоит из 2 частей UTF-16 (Unicode):
"𠮷".charCodeAt(0).toString(16) //d842 "𠮷".charCodeAt(1).toString(16) //dfb7
Если вы создадите новый символ, объединив эти символы юникода:
"\ud842\udfb7" //"𠮷"
Вы можете получить тот же результат, используя codePointAt() :
"𠮷".codePointAt(0) //20bb7
Если вы создадите новый символ, объединив эти символы юникода:
"\u{20bb7}" //"𠮷"
Подробнее о Юникоде и работе с ним в Юникоде и UTF-8.
Оригинал: “https://flaviocopes.com/javascript-string-codepointat/”