Learn JavaScript

charCodeAt() - метод для получения кода символа строки в JavaScript

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-символах.