字符串长度
一 概述
JavaScript引擎使用UTF-16编码
UTF-16编码:每个字符使用1~2个编码单元表示(每个编码单元是两个字节)。通过每个编码单元的高6位来识别用1个编码单元还是2个编码单元。

UTF-8编码:每个字符使用1~4个字节表示。第一个字节以多少个1开头,就占用多少个字节。

二 字符串表示方法
'\u{20BB7}' // '𠮷'
'\uD842\uDFB7' // '𠮷'
'\u{20BB7}'==='\uD842\uDFB7' // true
三 字符串API
1 length属性
返回字符串的编码单元数。
'j'.length // \u006A,1个编码单元
'吉'.length // \u5409,1个编码单元
'𠮷'.length // \uD842\uDFB7,2个编码单元
2 charCodeAt
返回当前位置的编码单元
'j𠮷'.charCodeAt(0) // 106(即0x6a)
'j𠮷'.charCodeAt(1) // 55362(即0xD842)
3 codePointAt
返回从当前位置开始的完整编码单元
'j𠮷'.codePointAt(0) // 106(即0x6a)
'j𠮷'.codePointAt(1) // 134071(即0x20BB7)(即\uD842\uDFB7)
'j𠮷'.codePointAt(2) // 57271(即0xDFB7)
四 遍历所有字符
ES6 为字符串添加了遍历器接口(详见Iterator),使得字符串可以被for...of循环遍历。
for...of循环可以正确识别出每个字符。
let str='吉ji𠮷';
for(let ch of str){
console.log(ch);
}

五 度量单位
字符数
编码单元数
字节数
浙公网安备 33010602011771号