ES6 不仅在字符串模板、解构赋值和迭代方面做出了改进,还在 Unicode 表示法和 String 对象的 API 上引入了新特性。这些改进为处理多种语言和复杂字符集的字符串提供了更好的支持。
Unicode 表示法
ES6 引入了更好的 Unicode 支持,允许 JavaScript 正确处理 4 个字节的 UTF-16 字符。
1. Unicode 码点表示法
ES6 引入了一种新的 Unicode 码点表示法,使用大括号 {} 包围 Unicode 码点。
// 传统写法只能处理 16 位的 UTF-16
console.log("\u20BB7"); // 输出: ₻7
// ES6 写法可以处理 32 位的 UTF-16
console.log("\u{20BB7}"); // 输出: 𠮷
2. String.fromCodePoint() 和 codePointAt()
String.fromCodePoint():可以识别大于 0xFFFF 的码点,创建对应的字符串。codePointAt():能够正确处理 4 个字节存储的字符,返回一个字符的码点。
console.log(String.fromCodePoint(0x20BB7)); // 输出: 𠮷
let s = "𠮷";
console.log(s.codePointAt(0)); // 输出: 134071
新增的 String API
ES6 在 String 对象上新增了几个实用的方法。
1. String.includes()
检查字符串是否包含另一个字符串。
let str = "Hello world!";
console.log(str.includes("world")); // 输出: true
2. String.startsWith() 和 String.endsWith()
这两个方法分别用于检测字符串是否以给定的子字符串开始或结束。
let str = "Hello world!";
console.log(str.startsWith("Hello")); // 输出: true
console.log(str.endsWith("world!")); // 输出: true
3. String.repeat()
返回一个新字符串,表示将原字符串重复指定次数。
let str = "abc";
console.log(str.repeat(3)); // 输出: "abcabcabc"
使用场景
- Unicode 表示法:在处理包含复杂字符(如表情符号或某些语言文字)的字符串时非常有用。
- 新增 API:简化了字符串的检查、比较和复制操作。
注意事项
- 使用新的 Unicode 表示法和 API 时,需要确保环境支持 ES6。
- 在处理涉及多国语言或特殊字符的字符串时,正确的 Unicode 处理尤其重要。
ES6 对字符串的这些改进和增强,使得在 JavaScript 中处理字符串变得更加灵活和强大。这些特性对于构建现代、国际化的 Web 应用至关重要。