string.fromcharcode()是javascript中根据utf-16编码单元生成字符的静态方法,仅支持≤0xffff码点;处理≥0x10000码点需手动拆分代理对,推荐优先使用string.fromcodepoint()。

String.fromCharCode() 是 JavaScript 中将 Unicode 编码值转为对应字符的静态方法,不依赖实例,直接通过 String 调用。它不处理字符串或 UTF-16 代理对(如 emoji 或部分中文字符),只适用于基本多文种平面(BMP)内的单个码点(0–65535)。掌握它的适用边界和常见组合用法,比单纯记住语法更重要。
只接受数字参数,不自动转换类型
该方法严格要求传入整数,不会隐式转换字符串或布尔值:
-
String.fromCharCode("65")→"A"(看似可行,实为字符串被强制转为数字 65) -
String.fromCharCode("a")→"\u0000"(非数字字符串转为NaN,NaN转整数为 0) - 稳妥写法是显式转换:
String.fromCharCode(Number("65"))或直接传数字
一次生成多个字符,适合构建 ASCII 表或控制字符
支持多个参数,每个参数对应一个字符,常用于批量生成符号或初始化固定格式字符串:
-
String.fromCharCode(72, 101, 108, 108, 111)→"Hello" - 生成空格+制表符+换行:
String.fromCharCode(32, 9, 10)→" \t\n" - 避免拼接:比
"a" + "b" + "c"更简洁地组合已知码点
不能替代 String.fromCodePoint 处理 emoji 或生僻汉字
Unicode 中超出 BMP 的字符(如 ?、?、?)由两个 UTF-16 码元(代理对)表示,fromCharCode 仅取低 16 位,会截断或显示乱码:
-
String.fromCharCode(0x1F30D)→ 错误结果(实际需用String.fromCodePoint(0x1F30D)得到 ?) - 判断方式:若码点 > 0xFFFF(即大于 65535),必须改用
fromCodePoint - 兼容性注意:
fromCodePoint在 IE 中不可用,需按需 polyfill
配合 charCodeAt 可实现简单编码/解码逻辑
二者互为逆运算,适合轻量级字符偏移(如凯撒密码)、ASCII 范围内大小写转换等场景:
- 小写转大写(仅限 a–z):
String.fromCharCode("a".charCodeAt(0) - 32)→"A" - 遍历字符串并偏移:
"abc".split("").map(c => String.fromCharCode(c.charCodeAt(0) + 1)).join("")→"bcd" - 注意:超出有效范围(如 0 或 65536+)会得到空字符或问号,需自行校验
真正用好 fromCharCode,关键不是记住了多少例子,而是清楚它能做什么、不能做什么——尤其要区分它和 fromCodePoint 的能力边界。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











