JavaScript中String.prototype.codePointAt()
和String.prototype.charCodeAt()
之间的区别是什么?
'A'.codePointAt(); // 65
'A'.charCodeAt(); // 65
答案 0 :(得分:23)
来自Mozilla:
charCodeAt()方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元(UTF-16代码单元匹配单个UTF-16代码单元中可表示的代码点的Unicode代码点) ,但也可能是代理点对的第一个代码单元,用于在单个UTF-16代码单元中无法表示的代码点,例如Unicode代码点> 0x10000)。如果需要整个代码点值,请使用codePointAt()。
charCodeAt()
是UTF-16,codePointAt()
是Unicode。
答案 1 :(得分:13)
为ToxicTeacakes的答案添加一些,这是另一个帮助您了解其中的例子:
"".charCodeAt(0).toString(16);//d842
"".charCodeAt(1).toString(16);//dfb7
"".codePointAt(0);//20bb7
"".codePointAt(1);//dfb7
console.log("\ud842\udfb7");//, an example of hexadecimal digits
console.log("\u20bb7\udfb7");//₻7�
console.log("\u{20bb7}");// an unicode code point escapes the "\ud842\udfb7"
The following是关于javascript字符串文字的信息:
“为\ uXXXX”
由四个十六进制数字指定的Unicode字符 XXXX。例如,\ u00A9是版权的Unicode序列 符号。“\∪{XXXXX}”
Unicode代码点
逃脱。例如,\ u {2F804}与简单的Unicode相同 逃避\ uD87E \ uDC04。
另见msdn
答案 2 :(得分:0)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt
从这个网址中,你可以得到差异,它们的功能几乎相同,但在回报和非法参数上有一些差异