charCodeAt() возвращает числовой код символа строки по индексу.
На практике этот метод используют реже, чем charAt() или at(), но он полезен, когда нужен именно код символа, а не сама буква.
Синтаксис
str.charCodeAt(index)
Метод вызывается у строки и возвращает число.
Если индекс не передать, будет использован 0.
console.log("ABC".charCodeAt()); // 65
Как работает charCodeAt()
const text = "ABC";
console.log(text.charCodeAt(0)); // 65
console.log(text.charCodeAt(1)); // 66
console.log(text.charCodeAt(2)); // 67
Индекс начинается с 0, как и в других строковых операциях JavaScript.
Что возвращает метод
charCodeAt() возвращает число от 0 до 65535.
console.log("A".charCodeAt(0)); // 65
console.log("a".charCodeAt(0)); // 97
Это не “символ”, а его числовое представление в UTF-16.
Если индекс вне диапазона
Если символа по такому индексу нет, charCodeAt() вернёт NaN.
const text = "abc";
console.log(text.charCodeAt(10)); // NaN
console.log(text.charCodeAt(-1)); // NaN
Когда это полезно
charCodeAt() удобно использовать, когда:
- нужен числовой код символа
- нужно сравнивать символы по кодам
- надо работать с низкоуровневой обработкой текста
Пример:
const text = "JavaScript";
console.log(text.charCodeAt(0)); // 74
charCodeAt() и charAt()
charAt() возвращает сам символ, а charCodeAt() - его числовой код.
const text = "A";
console.log(text.charAt(0)); // "A"
console.log(text.charCodeAt(0)); // 65
Если нужен символ, используют charAt() или at(). Если нужен код, используют charCodeAt().
Важный момент: UTF-16 и emoji
charCodeAt() работает с UTF-16-кодовыми единицами, а не с полными Unicode-кодовыми точками.
Из-за этого с emoji и некоторыми редкими символами результат может быть неожиданным:
const text = "😀";
console.log(text.charCodeAt(0)); // 55357
Это не “полный код emoji”, а только первая UTF-16-часть.
Если нужен полный Unicode-код символа, удобнее использовать codePointAt().
const text = "😀";
console.log(text.codePointAt(0)); // 128512
Частые ошибки
Ожидать, что charCodeAt() вернёт символ
console.log("A".charCodeAt(0)); // 65
Метод возвращает число, а не строку.
Забывать про NaN вне диапазона
const text = "abc";
console.log(text.charCodeAt(10)); // NaN
Поэтому при работе с индексами полезно помнить про длину строки.
Использовать charCodeAt() для emoji как для обычных букв
console.log("😀".charCodeAt(0)); // 55357
Для таких символов результат может быть не тем, который ожидается. В таких случаях лучше смотреть на codePointAt().
Быстрая памятка
charCodeAt(index)возвращает числовой код символа- если индекс не передать, используется
0 - если индекс вне диапазона, метод вернёт
NaN - метод работает с UTF-16-кодовыми единицами
- для emoji и некоторых Unicode-символов удобнее
codePointAt()
Коротко
charCodeAt() - это метод строки в JavaScript, который возвращает числовой код символа по индексу. Он полезен, когда нужен именно код, но важно помнить, что метод работает с UTF-16 и может вести себя неожиданно на emoji и некоторых Unicode-символах.