ES6中Unicode的改动
早期,由于储存空间宝贵,Unicode使用16位二进制来储存文字,我们将一个16位的二进制编码叫做一个码元(Code Unit)。
后来由于技术的发展,Unicode对文字编码进行了扩展,将某些文字扩展到了32位(占用两个码元),并且,将某个对应的二进制数字叫做码点(Code Point)。
//此时就产生了一个问题
//在这里我写了一个字符串这个字是一个生僻字读ji
const text = '吉';
//而我在这里用.length的方法来测试字符串的长度
console.log('字符串长度:', text.length);
//用正则表达式来检索看看能不能检索到
console.log('使用正则测试:', /^.$/.text(text));
而结果是
???
不应该对吧,字符串长度应该为1
正则表达式应该是能检索到字符串的啊,应该是为ture
那是因为现在有些文字要占用两个码元,有的文字占用一个码元,而js在很早之前1999年的时候已经有10年没有更新了一个语言有10年没有更新是多么可怕的一