String.fromCodePoint()
String.fromCodePoint()
静态方法返回根据指定的代码点序列创建的字符串。
试一试
语法
js
String.fromCodePoint()
String.fromCodePoint(num1)
String.fromCodePoint(num1, num2)
String.fromCodePoint(num1, num2, /* …, */ numN)
参数
num1
, …,numN
-
一个介于
0
和0x10FFFF
(含)之间的整数,表示一个 Unicode 代码点。
返回值
使用指定的代码点序列创建的字符串。
异常
RangeError
-
如果
numN
不是整数,小于0
,或者在转换为数字后大于0x10FFFF
,则抛出此异常。
描述
因为 fromCodePoint()
是 String
的静态方法,所以您始终将其用作 String.fromCodePoint()
,而不是作为您创建的 String
值的方法。
Unicode 代码点范围从 0
到 1114111
(0x10FFFF
)。在 UTF-16 中,每个字符串索引都是一个代码单元,其值为 0
– 65535
。较高的代码点由一对 16 位代理伪字符表示。因此,fromCodePoint()
可能返回一个字符串,其length
(以 UTF-16 代码单元为单位)大于传递的参数数量。有关 Unicode 的信息,请参阅UTF-16 字符、Unicode 代码点和音节簇。
示例
使用 fromCodePoint()
有效输入
js
String.fromCodePoint(42); // "*"
String.fromCodePoint(65, 90); // "AZ"
String.fromCodePoint(0x404); // "\u0404" === "Є"
String.fromCodePoint(0x2f804); // "\uD87E\uDC04"
String.fromCodePoint(194564); // "\uD87E\uDC04"
String.fromCodePoint(0x1d306, 0x61, 0x1d307); // "\uD834\uDF06a\uD834\uDF07"
无效输入
js
String.fromCodePoint("_"); // RangeError
String.fromCodePoint(Infinity); // RangeError
String.fromCodePoint(-1); // RangeError
String.fromCodePoint(3.14); // RangeError
String.fromCodePoint(3e-2); // RangeError
String.fromCodePoint(NaN); // RangeError
与 fromCharCode() 比较
String.fromCharCode()
不能通过指定其代码点来返回补充字符(即代码点 0x010000
– 0x10FFFF
)。相反,它需要 UTF-16 代理对才能返回补充字符
js
String.fromCharCode(0xd83c, 0xdf03); // Code Point U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" === "\uD83C\uDF03"
另一方面,String.fromCodePoint()
可以通过指定其代码点(等效于 UTF-32 代码单元)来返回 4 字节补充字符以及更常见的 2 字节 BMP 字符
js
String.fromCodePoint(0x1f303); // or 127747 in decimal
规范
规范 |
---|
ECMAScript 语言规范 # sec-string.fromcodepoint |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。