Learn JavaScript

String.fromCodePoint() - статический метод для создания строки из Unicode-кодов в JavaScript

String.fromCodePoint() создаёт строку из Unicode-кодов.

Это статический метод объекта String, который работает именно с кодовыми точками Unicode, а не просто с UTF-16-частями.

Синтаксис

String.fromCodePoint(num1)
String.fromCodePoint(num1, num2, ...)

Метод возвращает новую строку.

Как работает String.fromCodePoint()

console.log(String.fromCodePoint(65)); // "A"
console.log(String.fromCodePoint(66)); // "B"

Если передать несколько чисел, метод соберёт строку из нескольких символов:

console.log(String.fromCodePoint(72, 101, 108, 108, 111)); // "Hello"

Это статический метод

String.fromCodePoint() вызывается у String, а не у строки.

Правильно:

String.fromCodePoint(65); // "A"

Неправильно:

// "A".fromCodePoint(65); // Ошибка

Обычные символы

Для обычных букв, цифр и символов метод работает просто и ожидаемо.

console.log(String.fromCodePoint(97));   // "a"
console.log(String.fromCodePoint(49));   // "1"
console.log(String.fromCodePoint(9731)); // "☃"

Emoji и Unicode-символы

Главное преимущество String.fromCodePoint() видно на emoji и других символах вне базовой таблицы Unicode.

console.log(String.fromCodePoint(0x1F600)); // "😀"

Здесь можно передать полный Unicode-код одной цифрой, и метод корректно создаст символ.

String.fromCodePoint() и String.fromCharCode()

String.fromCharCode() работает с UTF-16-кодовыми единицами, а String.fromCodePoint() - с кодовыми точками Unicode.

Для обычных символов разница часто незаметна:

console.log(String.fromCharCode(65));  // "A"
console.log(String.fromCodePoint(65)); // "A"

Но для emoji разница становится важной:

console.log(String.fromCharCode(0x1F600)); // не тот символ
console.log(String.fromCodePoint(0x1F600)); // "😀"

Если нужно работать с emoji и другими Unicode-символами вне базового диапазона, String.fromCodePoint() обычно удобнее и правильнее.

Несколько символов сразу

Метод умеет принимать сразу несколько кодовых точек.

console.log(String.fromCodePoint(72, 105, 32, 0x1F600)); // "Hi 😀"

Это удобно, если строка уже хранится как набор Unicode-кодов.

Когда это полезно

String.fromCodePoint() удобно использовать, когда:

  • нужно собрать строку из Unicode-кодов
  • в строке могут быть emoji
  • важна корректная работа с символами вне базовой таблицы Unicode

Пример:

const codes = [0x1F44B, 32, 0x1F600];

console.log(String.fromCodePoint(...codes)); // "👋 😀"

Какие ошибки бывают

Если передать неверную кодовую точку, метод выбросит RangeError.

// String.fromCodePoint(-1); // RangeError
// String.fromCodePoint(0x110000); // RangeError
// String.fromCodePoint(3.14); // RangeError

Это значит, что аргументы должны быть корректными целыми Unicode-кодами.

String.fromCodePoint() и codePointAt()

Эти методы удобно понимать в паре:

  • codePointAt() получает Unicode-код из строки
  • String.fromCodePoint() создаёт строку из Unicode-кода
const symbol = "😀";
const code = symbol.codePointAt(0);

console.log(code); // 128512
console.log(String.fromCodePoint(code)); // "😀"

Частые ошибки

Пытаться вызвать метод у строки

// "A".fromCodePoint(65); // Ошибка

String.fromCodePoint() - это статический метод String.

Путать кодовую точку и UTF-16-часть

console.log(String.fromCodePoint(0x1F600)); // "😀"

Здесь число - это именно полная Unicode-кодовая точка, а не отдельная часть UTF-16.

Передавать дробные или неверные значения

// String.fromCodePoint(3.14); // RangeError

Метод ожидает корректные целые коды символов.

Быстрая памятка

  • String.fromCodePoint() создаёт строку из Unicode-кодов
  • это статический метод, а не метод строки
  • можно передавать сразу несколько кодов
  • метод особенно удобен для emoji и Unicode-символов вне базовой таблицы
  • при неверных значениях выбрасывается RangeError

Коротко

String.fromCodePoint() - это статический метод JavaScript, который создаёт строку из Unicode-кодовых точек. Он особенно полезен для emoji и других символов, которые неудобно создавать через String.fromCharCode().