String.fromCharCode()
Статичний метод String.fromCharCode() (із коду символу) повертає рядок, сформований з вказаної послідовності кодових одиниць UTF-16.
Спробуйте його в дії
Синтаксис
String.fromCharCode()
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)
Параметри
num1, …,numNЧисло між
0і65535(0xFFFF), що відповідає кодовій одиниці UTF-16. Числа, більші за0xFFFF, обрізаються до останніх 16 бітів. Перевірка на коректність не виконується.
Повернене значення
Рядок довжиною N, який складається з N вказаних кодових одиниць UTF-16.
Опис
У зв'язку з тим, що fromCharCode() є статичним методом String, він завжди використовується у вигляді String.fromCharCode(), а не як метод самостійно створених значень String.
Кодові точки Unicode мають діапазон від 0 до 1114111 (0x10FFFF). Статичний метод charCodeAt() завжди повертає значення, менші за 65536, оскільки вищі кодові точки представлені парами 16-бітових псевдосимволів-сурогатів. Таким чином, щоб створити повний символ зі значенням, більшим за 65535, необхідно надати дві кодові одиниці (як якби оброблявся рядок з двома символами). Про Unicode читайте UTF-16 символи, кодові точки Unicode та графемні кластери.
У зв'язку з тим, що fromCharCode() працює лише з 16-бітовими значеннями (так само як послідовності екранування \u), для отримання доповняльного символу необхідна сурогатна пара. Наприклад, і String.fromCharCode(0xd83c, 0xdf03), і "\ud83c\udf03" повертають кодову точку U+1F303 "Зоряна ніч". Попри те, що існує математична залежність між значенням доповняльної кодової точки (тобто 0x1f303) і обома сурогатними значеннями, що їй відповідають (тобто 0xd83c і 0xdf03), необхідний додатковий крок, щоб або обчислити, або знайти значення сурогатної пари щоразу, коли необхідна доповняльна кодова точка. Через це зручніше використовувати String.fromCodePoint(), котрий дає змогу повертати доповняльні символи на основі їхніх фактичних значень кодових точок. Наприклад, String.fromCodePoint(0x1f303) повертає кодову точку U+1F303 "Зоряна ніч".
Приклади
Застосування fromCharCode()
В UTF-16 символи базового багатомовного плану займають одну кодову одиницю:
String.fromCharCode(65, 66, 67); // повертає "ABC"
String.fromCharCode(0x2014); // повертає "—"
String.fromCharCode(0x12014); // також повертає "—"; цифра 1 обрізається, тож нею знехтувано
String.fromCharCode(8212); // також повертає "—"; 8212 — це десяткова форма числа 0x2014
Допоміжні символи в UTF-16 вимагають двох кодових одиниць (так звана сурогатна пара):
String.fromCharCode(0xd83c, 0xdf03); // Кодова одиниця U+1F303 "Зоряна
String.fromCharCode(55356, 57091); // ніч" === "\uD83C\uDF03"
String.fromCharCode(0xd834, 0xdf06, 0x61, 0xd834, 0xdf07); // "\uD834\uDF06a\uD834\uDF07"
Специфікації
Сумісність із браузерами
| desktop | mobile | server | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
fromCharCode
|
Chrome Full support 1 | Edge Full support 12 | Firefox Full support 1 | Internet Explorer Full support 4 | Opera Full support 4 | Safari Full support 1 | WebView Android Full support 1 | Chrome Android Full support 18 | Firefox for Android Full support 4 | Opera Android Full support 10.1 | Safari on iOS Full support 1 | Samsung Internet Full support 1.0 | Deno Full support 1.0 | Node.js Full support 0.10.0 |