js中的字符串的length的知识点。

unicode字符集

unicode字符集是对世界上绝大部分字符进行编码,一个字符对应一个编码,范围:0x0000-0x10FFFF,可以表示一百多万个字符,其中0x0000-0xFFFF的字符为BMP(基本多语言平面字符集),剩余的字符集为补充字符集包括了(许多常见的emoji字符位于此)。

utf-8,utf-16,uft-32编码方式

这些是对unicode字符集中的字符进行存储传输的编码方式,对于一个unicode码的二进制值,编码方式会以不同的规则将unicode码映射成1~4字节的值。其中
utf-8:会将unicode码以6位为界切割,编码后的值在1-4字节。
utf-16:0x0000-0xFFFFunicode字符不用编码,直接存储,大于这个范围的用一个代理对(2个16位,即2个码元)表示,编码后的值为2或4字节
utf-32: 直接用32位4个字节来存储unicode值,不需要编码。

utf-24不实用,计算机不好处理,性能差,而且节省的空间也不多,所以不编码的方式就用utf-32

JS中的字符串存储方式

js中存储字符的编码方式用的是UTF-16,因此string.length这里的长度指的是16位码元的长度,比如长度是2,说明这个值存储占用了2个码元,2*16=32位,4个字节。

字符串的其他方法:

  • string.length,字符串有多少个码元。
  • string.charAt(),第n个码元的unicode的字符。
  • string.charCodeAt(n),第n个码元的unicode的值,十进制
  • string.charPointAt(n),第n个码点的unicode的值,十进制,字符中如果有补充字符集(超过0xFFFF)的字符,需要用这个来获取对于位置的字符。
    当字符中的字符的unicode值在0x0000-0xFFFF时,码点的值就是码元的值,上面的方法都没有差别。大于0xFFFF的unicode字符,如emoji表情,码点的值就不是码元的值了,要注意区别,如下图的emoji表情的length是2.

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值