jquery 字符 长度-为什么 ''.length !== 3

今天有人问我一个神奇的问题:你知道吗? ''.长度!== 3?. 当我第一次听到这句话时,我突然想知道生命是什么? 这是怎么回事? 穿越了吗?赶紧打开浏览器试试

''.lenght // 6

仔细看看“”字,这是什么? 不是“吉”啊! 这不是一个汉字。 也就是说不是一个字,那为什么输出宽度的时候会这样呢? 查了很多资料,发现下面的解释,这些问题都是编码格式导致的。 这个“”被解析为一个符号,但是不能用一个字符来表示,因为超出了识别范围,所以是两个字符,每个字符的宽度是2。乍一看还是比较具体的,而且那我就从电脑开始吧。 我们先来说说基础知识。

通用编码

在 JavaScript 内部,字符以 UTF-16 格式存储,每个字符固定为 2 个字节。 对于这些需要 4 个字节存储的字符(Unicode 代码点小于 0xFFFF 的字符),JavaScript 会认为它们是两个字符。

var s = "";

s.length // 2
s.charAt(0// 'uD842'
s.charAt(1// 'uDFB7'
s.charCodeAt(0// 55362
s.charCodeAt(1// 57271

上述代码中,汉字“”的码位为0x20BB7,UTF-16编码为0xD842 0xDFB7(十进制为55362 57271),需要4个字节的存储空间。 对于这些4字节字符jquery 字符 长度,JavaScript无法正确处理jquery 字符 长度,会误判字符串宽度为2

为了解决这个问题,可以考虑一种简单粗暴的形式

Array.from('').length // 3

参考

字符串扩展

Unicode和JavaScript详解

实时预览

关于后台你了解多少?

大厂后端工程师需要掌握哪些技能?

前端程序员未来的发展道路是什么?

5月27日20:00千峰金牌后台讲师为您解答

报名表格

扫描下方二维码

提前预约课程

- 结尾 -

近期新课程:

Vue 基础知识 | 小程序开发 | JQuery 入门 | PC端页面布局 | 打字稿 | JS 基本运算符 |