字符的Unicode表示法
JavaScript内部,字符以UTF-16的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),必须用两个双字节的形式表示。
'\uD842\uDFB7'//𠮷
ES6可以在一个括号内直接用大于0xFFFF表示
'\u{20bb7}'//𠮷
对于Unicode码点大于0xFFFF的字符
一个字符的length长度是2
'𠮷'//'\uD842\uDFB7'
'𠮷'.length//2
'𠮷'[0]//'\uD842'
'𠮷'[1]//'\uDFB7'
返回字符码点
'𠮷'.codePointAt(0).toString(16)//"20bb7"
//遗憾的是
'𠮷'.codePointAt(1).toString(16)//'DFB7'
如字符串中包含Unicode码点大于0xFFFF的字符,使用String.prototype[Symbol.iterator]可以正确返回每个字符
for(let i of '𠮷a'){
console.log(i);
}
//𠮷
//a
[... '𠮷a']//['𠮷','a']
//失败
var s='𠮷a';
for(let i=0;i<=s.length;i++){
console.log(s[i])
}
//�
//�
//a
网友评论