js 文本

anyux / 2024-09-20 / 原文

目录
  • js通过字符串类型表示文本

字符串(string)是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集.

js通过字符串类型表示文本

字符串的长度(length)是其所含16位值的个数
js字符串和其数组的索引从零开始,第一个字符的位置是0,第二个位置是1
空字符串(empty sting)长度为0

js没有表示单个字符的"字符型"

要表示一个16位值,只需要将其赋值给字符串变量即可,这个字符串长度为1

字符集,内码,js字符串

js采用UTF-16编码的Unicode字符集,js字符串是由一组无符号的16位值组成的序列

最常用的Unicode字符是通过16位的内码表示,并代表字符串中的单个字符,那些不能表示为16位的Unicode字符则遵循UTF-16编码规则----用两个16位值组成的一个序列表示

这意味着一个长度为2的js字符串(两个16位值)有可能表示一个Unicode字符

var p = "π";    // π 由 16 位内码表示 0x03c0
var e = "e";    // e 由 17 位内码表示 0x1d452
console.log(p.length);         // => 1: p 包含一个 16 位值
console.log(e.length);         // => 2: e 通过 UTF-16 编码后包含两个 16 位值:"\ud835\udc52"

js定义的各式字符串操作方法均作用于16位值,而非字符,且不会对序列做单独处理,同样js不会对字符串做标准化的加工,甚至不能保证字符串是合法的UTF-16格式