99% 开发者都不知道的 JS 冷知识系列(一)

此系列目的不知是通过简短的内容让读者迅速了解到一个 JS 的冷知识,如果想更进一步学习的冷知列话可以把文中的知识点深挖以下。

获取字符串的识系长度想必大家都是常用的:

1.length  // -> 1 

但是在某些情况下,获取字符串长度可能并不如你所想的不知一样,比如说某些 emoji 甚至是冷知列汉字

👨‍👩‍👧‍👦.length // ??? 

你可能会认为我这只用了一个 emoji,那么长度应该是识系 1,但是不知实际上输出的内容为 11~

笔者来简单的云南idc服务商说下这是为什么。

字符是冷知列通过 Unicode 来表示的,JS 的识系字符编码是 UCS-2,这个编码规则是不知每两字节代表一个字符,然后 JS 内部获取字符串长度是冷知列通过计算字符长度来得到的。

Unicode 字符分为 17 组平面,识系第一个平面称为基本平面,不知Unicode码位范围为 U+0000 - U+FFFF,冷知列其他都叫做补充平面。识系对于 UCS-2 编码来说除了基础平面的字符长度为 1 以外,其他都为 2。

对于 👨‍👩‍👧‍👦 来说,网站模板它是由四个补充平面的码位及三个基础平面的码位组成,所以它的字符长度为 11。每个 emoji 都有它各自的编码信息,你可以在网上自行查询。

最后说个好玩的,对于 emoji 来说,我们可以对它进行结构,然后神奇的事情又发生了:

总结

文章简短,所以知识就是带过,毕竟大部分冷知识脑子里有个印象即可,如果你有兴趣继续学习,可以去了解以下知识点:

字符编码分为哪几种 Unicode 编码相关 emoji 编码信息
人工智能
上一篇:简化数据中心搬迁:你需要制订一份详细的清单
下一篇:俄罗斯自研8核CPU性能实测:能玩几十年前老游戏,下一代「高性能」芯片无人代工