解答为什么'𣎴'.length输出2
这实际上是空间复杂度和实用性的权衡策略,也可能是各家对Unicode的早期实现的坑,很多技术都中招了,不光是JavaScript,Java也有这样的问题,MySQL也为此出现了utf8和utf8mb4诡异的两种数据类型。
Unicode分基本多文种平面和辅助平面两部分,JavaScript使用UCS-2来表示Unicode字符的,也就是说基本多文种平面字符用1个JavaScript字符表示,辅助平面字符用2个JavaScript字符表示,所以在JavaScript中,‘𣎴’这个字符实际上是’\ud84c\udfb4’,输出length肯定就是2了。
8 回复
@enmoon 因为’a’和’a’被赋值给window.x和window.y,也就是window的属性.,比较的是地址。两个‘a’(对应的堆内存是同一处)的地址(对应的占内存不同)分别是两处16进制的地址内存。