String.fromCharCode() 可将 Unicode 码点数组转为字符串,推荐用展开运算符(...codes)传参;需校验每个码点为 0–0x10FFFF 范围内的整数,避免静默错误。

String.fromCharCode() 是 JavaScript 中将 Unicode 码点(数字)转换为对应字符的静态方法。当你有一组表示字符编码的数值(比如 [72, 101, 108, 108, 111]),就可以用它还原成字符串(如 "Hello")。
基本用法:逐个传入数字
最直接的方式是把数组元素作为独立参数传给 String.fromCharCode():
const codes = [72, 101, 108, 108, 111];<br>const text = String.fromCharCode(codes[0], codes[1], codes[2], codes[3], codes[4]); // "Hello"
但手动展开数组不现实,尤其当数组很长时。
推荐方式:用展开运算符(...)批量传入
现代 JavaScript 支持用 ... 将数组“打散”为参数列表,简洁高效:
const codes = [72, 101, 108, 108, 111];const text = String.fromCharCode(...codes); // "Hello"- 支持任意长度的数值数组,包括空数组(返回空字符串)
- 注意:数组中每个元素必须是有效 Unicode 码点(0–0x10FFFF 之间的整数)
处理无效或非整数数据
如果数组含非数字、小数、负数或超出范围的值,String.fromCharCode() 会静默转换或产生意外结果(如 String.fromCharCode(-1) 得到 ""):
- 建议提前过滤/校验:用
Number.isInteger()和范围检查 - 例如:
const validCodes = codes.filter(n => Number.isInteger(n) && n >= 0 && n - 再执行
String.fromCharCode(...validCodes)
替代方案:使用 Uint16Array + TextDecoder(适合大量二进制数据)
若数值来自底层字节操作(如 ArrayBuffer),且涉及多字节字符(如中文),更健壮的方式是构造 Uint16Array 并用 TextDecoder:
const uint16 = new Uint16Array(codes);const text = new TextDecoder('utf-16').decode(uint16);- 这种方式天然支持 UTF-16 编码逻辑(如代理对),比纯
fromCharCode更可靠

















