You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用模板字符串生成Emoji报错,如何实现该需求?

动态生成Emoji的正确姿势(解决模板字符串转义报错问题)

我之前也踩过这个坑!你遇到的问题本质是:JavaScript模板字符串里的Unicode转义序列(\u{...})是静态解析的,它必须在代码编译阶段就确定具体的字符码,没办法用变量插值来动态替换——这就是为啥直接写'\u{1F60E}'没问题,但用\u{${unifiedValue}}会抛出SyntaxError。

给你两个简单靠谱的解决方案,完全能替代大量if判断的写法:

方法1:使用String.fromCodePoint() + parseInt()

这个方法是最直观的,把十六进制的字符码字符串转成十进制数值后,传给fromCodePoint就能生成对应的Emoji:

const unifiedValue = '1F60E';
const emoji = String.fromCodePoint(parseInt(unifiedValue, 16));
console.log(emoji); // 输出 😎
  • parseInt(unifiedValue, 16):把十六进制字符串'1F60E'转换成十进制的128526
  • String.fromCodePoint():接收Unicode码点数值,返回对应的字符

方法2:用Number()构造十六进制数值

如果觉得parseInt有点麻烦,也可以直接构造十六进制字面量字符串,再转成数值传给fromCodePoint:

const unifiedValue = '1F60E';
const emoji = String.fromCodePoint(Number(`0x${unifiedValue}`));
console.log(emoji); // 同样输出 😎
  • 0x${unifiedValue}会生成字符串'0x1F60E',这是十六进制数值的字面量格式
  • Number()把这个字符串转换成对应的数值,效果和0x1F60E一样

这两种方法都能完美支持动态生成Emoji,不管你有多少个字符码需要处理,只要循环遍历变量就行,再也不用写几百个if判断啦!

内容的提问来源于stack exchange,提问作者sertsedat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:10