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().