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

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

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

[[336183]]

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

  1. '1'.length  // -> 1 

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

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

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

笔者来简单的说下这是为什么。

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

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

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

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

总结

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

  • 字符编码分为哪几种
  • Unicode 编码相关
  • emoji 编码信息

 

责任编辑:赵宁宁 来源: 前端真好玩
相关推荐

2023-01-13 16:48:48

前端开发JavaScript

2020-07-29 09:53:09

VSCode编码工具插件

2018-10-17 14:50:08

2021-07-22 09:28:35

DockerLinux命令

2022-06-19 14:38:55

Python

2022-10-31 18:38:24

MySQL数据订单表

2020-12-21 09:00:04

MySQL缓存SQL

2019-08-09 14:20:46

微信软件手机

2011-02-18 09:05:25

WebFirebugCSS

2022-03-28 18:48:42

人工智能AI

2015-04-13 13:51:44

GMGC

2020-12-21 09:44:53

MySQL查询缓存数据库

2021-09-24 14:20:25

开发技能工具

2020-05-18 09:33:27

前端开发工具

2021-12-29 11:38:59

JS前端沙箱

2022-01-05 08:01:48

前端技术编程

2021-11-16 08:51:29

Node JavaScript变量类型

2021-11-12 10:05:19

跳表BAT面试

2024-10-22 09:03:35

前端signalAPI

2020-02-21 14:55:02

Python代码字符串
点赞
收藏

51CTO技术栈公众号