fromCharCode和fromCodePoint区别

本文深入探讨了ES6中String.fromCodePoint方法的使用,对比了与String.fromCharCode的区别,尤其是在处理超过0xFFFF码点的Unicode字符,如emoji表情时的优势。文章还列举了几种特殊Unicode字符的转写方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String.fromCharCode()方法可以实现把码点转成字符打印,比如String.fromCharCode(0x0061),控制台会输出a,但是fromCharCode只能对不大于0xFFFF的码点才有效,如果我们要打印一个emoji表情笑脸?,首先我们知道这个笑脸的Unicode编码是1f601,但是很明显超出了FFFF,如果使用fromCharCode并不会输出我们想要的笑脸

String.fromCharCode(0x1f601)
//""

你会发现输出的是一个方框,

String.fromCharCode(0xf601)
//""

你会发现使用fromCharCode输出0x1f601和输出0xf601结果是一样的,这是因为1f601超出了ffff,所以输出结果把1f601中的高位1截断了,实际输出的还是f601。

所以为了解决不能大于0xffff的问题,es6出现了fromCodePoint。

String.fromCodePoint(0x1f601)
//"?"

终于出现了我们想要的结果,fromCodePoint是可以传递多个参数的,在处理过程中会对多个参数进行拼接处理。

String.fromCodePoint(0x1f601,0x1f601,0x1f601)
//"???"

标记几个不能直接使用Unicode的转写的,只能使用转义形式。比如反斜杠 前面要加上转义符号才可以,\u005c

  • U+005C:反斜杠(reverse solidus)
  • U+000D:回车(carriage return)
  • U+2028:行分隔符(line separator)
  • U+2029:段分隔符(paragraph separator)
  • U+000A:换行符(line feed)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值