JavaScript charCodeAt() 语法
charCodeAt() 是 JavaScript 字符串的一个方法,它用于获取字符串中 “指定下标” 字符对应的 Unicode 值(一个 0 到 65535 之间的整数)。
语法:
str.charCodeAt(index)说明:
charCodeAt() 方法接收单个参数。
index(可选):表示字符的索引(下标),值从 0 开始,默认值为 0。也就是说,当 index 省略时,表示获取第 1 个字符。
参数 index 不能小于 0 或大于 str.length-1,否则会返回 NaN。
提示:
- charCodeAt() 方法与 charAt() 方法类似。不过 charAt() 返回的是字符本身,而 charCodeAt() 它返回的是字符对应的 Unicode 值。
- 对于 Unicode 编码点大于 “0xFFFF” 的字符(例如一些 emoji 表情),charCodeAt() 可能无法正常获取。如果要获取完整的 Unicode 编码点,应该考虑使用 codePointAt() 方法。
JavaScript CharCodeAt() 摘要
| 属于 | JavaScript String 对象 |
|---|---|
| 使用频率 | 极低 |
| 修改原字符串 | 否 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript charCodeAt() 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript charCodeAt() 方法是如何使用的。
示例 1:charCodeAt() 基本用法
const str = "ABC";
console.log(str.charCodeAt(0));
console.log(str.charCodeAt(1));
console.log(str.charCodeAt(2));运行结果如下。
65
66
67示例 2:charCodeAt() 不带参数
const str = "ABC";
console.log(str.charCodeAt());运行结果如下。
65分析:
当 charCodeAt() 不带参数时,表示获取的是第 1 个字符对应的 Unicode 值。也就是说,str.charCodeAt() 等价于 str.charCodeAt(0)。
示例 3:字符串是中文
const str = "绿叶网";
console.log(str.charCodeAt(0));
console.log(str.charCodeAt(1));
console.log(str.charCodeAt(2));运行结果如下。
32511
21494
32593charCodeAt() 与 codePointAt()
charCodeAt() 与 codePointAt() 这两个方法的作用是一样的,都是获取字符串中指定下标字符对应的 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() 却可以正确转换。
charCodeAt() 与 string.fromCharCode()
charCodeAt() 与 string.fromCharCode() 这两个是相反操作,它们的区别如下。
charCodeAt():用于获取指定字符的 Unicode 值。string.fromCharCode():用于将 Unicode 值转换成字符。
