JavaScript codePointAt() 语法
codePointAt() 是 JavaScript 字符串的一个方法,它用于获取字符串中 “指定下标” 字符对应的 Unicode 值。
与 charCodeAt() 不同,codePointAt() 能够正确处理 Unicode 编码点大于 “0xFFFF” 的字符。
语法:
str.codePointAt(index)说明:
codePointAt() 方法接收单个参数。
index(可选):表示字符的索引(下标),值从 0 开始。当 index 省略时,表示获取第 1 个字符。
参数 index 不能小于 0 或大于 str.length-1,否则会返回 undefined。
提示: 在实际开发中,推荐优先使用 codePointAt(),而不是 charCodeAt()。
JavaScript codePointAt() 摘要
| 属于 | JavaScript String 对象 |
|---|---|
| 使用频率 | 低 |
| 修改原字符串 | 否 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript codePointAt() 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript codePointAt() 方法是如何使用的。
示例 1:codePointAt() 基本用法
const str = "ABC";
console.log(str.codePointAt(0));
console.log(str.codePointAt(1));
console.log(str.codePointAt(2));运行结果如下。
65
66
67示例 2:codePointAt() 不带参数
const str = "ABC";
console.log(str.codePointAt());运行结果如下。
65分析:
当 codePointAt() 不带参数时,表示获取的是第 1 个字符对应的 Unicode 值。也就是说,str.codePointAt() 等价于 str.codePointAt(0)。
示例 3:字符串是中文
const str = "绿叶网";
console.log(str.codePointAt(0));
console.log(str.codePointAt(1));
console.log(str.codePointAt(2));运行结果如下。
32511
21494
32593codePointAt() 与 charCodeAt() 的区别
codePointAt() 与 charCodeAt() 这两个方法的作用是一样的,都是获取字符串中指定下标字符对应的 Unicode 值,不过它们还是有一定的区别。
charCodeAt():是 ES1 的方法,它只能转换 Unicode 值不大于 “0xFFFF” 的字符。codePointAt():是 ES6 新推出的方法,它可以转换 Unicode 值大于 “0xFFFF” 的字符。
你可以将 codePointAt() 看成是 charCodeAt() 的 “增强版”,小伙伴们只需要掌握 codePointAt() 即可。
示例 4:Unicode 值小于等于 “0xFFFF”
const str = "ABC";
const result1 = str.charCodeAt(0);
console.log(result1);
const result2 = str.codePointAt(0);
console.log(result2);运行结果如下。
65
65分析:
对于 Unicode 值小于等于 “0xFFFF” 的字符,charCodeAt() 和 codePointAt() 都能正确识别。
示例 5:Unicode 值大于 0xFFFF
const str = "😁 😁 😁";
const result1 = str.charCodeAt(0);
console.log(result1);
const result2 = str.codePointAt(0);
console.log(result2);运行结果如下。
55357
128513分析:
“😁” (笑脸)的正确 Unicode 值为 “0x1f601” (即 128513),它已经大于 “0xFFFF” 。从结果看出来,charCodeAt() 无法正确转换它,而 codePointAt() 却可以正确转换。
codePointAt() 与 string.fromCodePoint()
codePointAt() 与 string.fromCodePoint() 这两个是相反操作,它们的区别如下。
codePointAt():用于获取指定字符的 Unicode 值。string.fromCodePoint():用于将 Unicode 值转换成字符。
