String.fromCharCode() создаёт строку из числовых кодов символов.
Это статический метод объекта String, который работает с UTF-16-кодовыми единицами.
Синтаксис
String.fromCharCode(num1)
String.fromCharCode(num1, num2, ...)
Метод возвращает новую строку.
Как работает String.fromCharCode()
console.log(String.fromCharCode(65)); // "A"
console.log(String.fromCharCode(66)); // "B"
Если передать несколько чисел, метод соберёт строку из нескольких символов:
console.log(String.fromCharCode(72, 101, 108, 108, 111)); // "Hello"
Это статический метод
String.fromCharCode() вызывается у String, а не у самой строки.
Правильно:
String.fromCharCode(65); // "A"
Неправильно:
// "A".fromCharCode(65); // Ошибка
Когда это полезно
String.fromCharCode() удобно использовать, когда:
- нужно собрать строку из кодов символов
- данные уже приходят в виде чисел
- нужно работать с UTF-16-кодовыми единицами
Пример:
const codes = [74, 83];
const text = String.fromCharCode(...codes);
console.log(text); // "JS"
Обычные символы
Для букв, цифр и многих обычных символов метод работает просто и ожидаемо.
console.log(String.fromCharCode(97)); // "a"
console.log(String.fromCharCode(49)); // "1"
console.log(String.fromCharCode(9731)); // "☃"
Несколько символов сразу
String.fromCharCode() умеет принимать сразу несколько кодов.
console.log(String.fromCharCode(72, 105, 33)); // "Hi!"
Это удобно, если строка уже хранится как набор чисел.
String.fromCharCode() и charCodeAt()
Эти методы часто удобно понимать в паре:
charCodeAt()получает код символа из строкиString.fromCharCode()делает строку из кода
const letter = "A";
const code = letter.charCodeAt(0);
console.log(code); // 65
console.log(String.fromCharCode(code)); // "A"
Важный момент: UTF-16
String.fromCharCode() работает с UTF-16-кодовыми единицами, а не с полными Unicode-кодовыми точками.
Для обычных символов это почти не заметно, но для emoji и некоторых редких символов это важно.
console.log(String.fromCharCode(0xD83D, 0xDE00)); // "😀"
Здесь emoji собирается из двух UTF-16-частей.
Если передать полный Unicode-код одной цифрой, результат может быть неожиданным:
console.log(String.fromCharCode(0x1F600)); // ""
Это происходит потому, что метод не работает напрямую с полной Unicode-кодовой точкой.
String.fromCharCode() и String.fromCodePoint()
Для символов вне базовой таблицы Unicode обычно удобнее String.fromCodePoint().
console.log(String.fromCharCode(0xD83D, 0xDE00)); // "😀"
console.log(String.fromCodePoint(0x1F600)); // "😀"
Если речь идёт об emoji или редких Unicode-символах, String.fromCodePoint() обычно понятнее и безопаснее.
Частые ошибки
Пытаться вызвать метод у строки
// "A".fromCharCode(65); // Ошибка
String.fromCharCode() - это статический метод String.
Передавать полный Unicode-код для emoji
console.log(String.fromCharCode(0x1F600)); // не тот символ, который ожидают
Для таких случаев лучше использовать String.fromCodePoint().
Путать код символа и индекс
console.log(String.fromCharCode(65)); // "A"
Число здесь - это код символа, а не позиция в строке.
Быстрая памятка
String.fromCharCode()создаёт строку из числовых кодов- это статический метод, а не метод строки
- можно передавать сразу несколько кодов
- метод работает с UTF-16-кодовыми единицами
- для emoji и некоторых Unicode-символов часто удобнее
String.fromCodePoint()
Коротко
String.fromCharCode() - это статический метод JavaScript, который создаёт строку из кодов символов. Он хорошо подходит для обычных UTF-16-значений, но для emoji и некоторых Unicode-символов чаще удобнее использовать String.fromCodePoint().