在编写 JavaScript 代码时,我们经常需要在字符串中写入一些特殊的字符,例如制表符、回车符、换行符等等。此外,我们还可能需要将一些 Unicode 字符写入字符串中,例如汉字、日文假名、希腊字母等等。这时就需要用到代码点转义。
什么是代码点转义?
在字符串中,我们可以使用反斜杠(\)来表示特殊字符,例如:
console.log("Hello\tworld!"); // 输出:Hello world! console.log("Hello\nworld!"); // 输出: // Hello // world!
同样地,我们也可以使用 Unicode 转义序列来表示 Unicode 字符。其中,Unicode 字符由一个或多个代码点组成,每个代码点由一个 4 位十六进制数字表示。例如,字符 'A' 的 Unicode 代码点是 0041。
在 JavaScript 中,我们可以将 Unicode 代码点表示成 \uXXXX
的形式,其中 XXXX
是 Unicode 代码点的四位十六进制数。例如:
console.log("\u0041"); // 输出:A
但是,\uXXXX
只能用来表示代码点小于等于 0xFFFF
的 Unicode 字符。如果要表示更高代码点的字符,我们需要使用另一种转义序列:\u{XXXXX}
。
\u{XXXXX}
可以用来表示任意 Unicode 代码点。其中,XXXXX
是代码点的 1 至 6 个十六进制数。例如,要表示汉字「中」的 Unicode 代码点 U+4E2D
,可以写成 \u{4E2D}
。
在 ES7(ECMAScript 2016)中,引入了一种新的转义序列:\u{XXXX}
。与 \u{XXXXX}
不同的是,\u{XXXX}
只能用来表示 4 个十六进制数字的 Unicode 代码点。
这种转义序列的好处在于,它更符合人的阅读习惯。例如,要表示大笑的 Unicode 符号 😆(U+1F606),我们可以写成 \u{1F606}
,如下所示:
console.log("\u{1F606}"); // 输出:😆
在 ES7 中,还可以使用代码点转义来指定字符串中的绝对位置。例如:
console.log("\u{20BB7}\u{91CE}\u{5B8B}".length); // 输出:4 console.log("\u{20BB7}\u{91CE}\u{5B8B}".charAt(0)); // 输出:𠮷 console.log("\u{20BB7}\u{91CE}\u{5B8B}".charAt(1)); // 输出: console.log("\u{20BB7}\u{91CE}\u{5B8B}".charAt(2)); // 输出:野 console.log("\u{20BB7}\u{91CE}\u{5B8B}".charAt(3)); // 输出:菫
在上面的例子中,我们使用了三个汉字作为字符串,其中第一个字符的 Unicode 代码点是 U+20BB7
。通过代码点转义,我们可以在字符串中直接插入这个字符,并且能够正确地计算字符串的长度和获得指定位置的字符。
如何学习代码点转义?
在学习代码点转义时,我们需要了解 Unicode 字符集与编码方式,以及不同的转义序列。以下是一些学习资源:
- Unicode 官网:了解 Unicode 字符集的基本知识。
- Unicode 码位查询工具:查询任意 Unicode 字符的码位和编码方式。
- JavaScript Unicode 编码参考:了解 JavaScript 中常用的 Unicode 转义序列。
在实践中,我们可以编写一些含有特殊字符和 Unicode 字符的代码,以便了解实际应用中的使用场景和注意事项。以下是一些示例代码:
-- -------------------- ---- ------- ----------------------------- ----------------------------- ---------------------- -- ---- ---------------------- -- ---- ------------------------- -- ----- ----------------------------------------- ------------------------------------------------ --------------------------------------------------- --------------------------------------------------- --------------------------------------------------- ---------------------------------------------------
总结
代码点转义是 JavaScript 中常用的字符串操作技术之一,它可以帮助我们在字符串中插入特殊字符和 Unicode 字符。在 ES7 中,新增了一种更方便的代码点转义序列:\u{XXXX}
。我们可以通过学习 Unicode 字符集和编码方式,以及了解不同的转义序列,来掌握代码点转义的使用技巧。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cef50db5eee0b52567b1d2