ES6 带来了大量的新特性和语法,其中之一就是 String.fromCodePoint
方法。这个方法可以让我们更加方便地创建 Unicode 字符串,为我们的前端开发带来了更加优雅的代码实现方式。
Unicode 字符串
在传统的 JavaScript 中,字符集是基于 ASCII 码的,只有 256 个字符,而 Unicode 则包括了世界上大部分的字母、符号和文字,其中许多字符是 ASCII 中不存在的。
在 Unicode 中,每一个字符都被赋予了一个唯一的码位,即一个整数值,用 U+xxxx
的格式表示。例如,英文字母 A 对应的码位是 U+0041
,中文汉字「中」对应的码位是 U+4E2D
。
在 JavaScript 中,我们可以使用 \u
加上四个十六进制的数字来表示一个 Unicode 字符。例如,\u0041
表示英文字母 A,\u4e2d
表示中文汉字「中」。
String.fromCodePoint 方法
传统的 JavaScript 中,如果想要创建一个 Unicode 字符串,我们可以先使用 \u
来表示字符的码位,然后将它们连接起来。例如,'\u0041\u4e2d'
表示字符串「A中」。
这样做的问题是,当我们想要表示的字符的码位很大时,必须使用多个 \u
来表示。例如,'\u{1F984}'
表示一个名为 "UNICORN FACE" 的 Unicode 字符,这个字符的码位是 U+1F984
,也就是十进制的 129412
。
ES6 中,为了让我们更加方便地创建 Unicode 字符串,引入了 String.fromCodePoint
方法。这个方法接受一个或多个码位,返回对应的 Unicode 字符串。例如,String.fromCodePoint(0x1F984)
就可以直接返回 "UNICORN FACE" 这个字符串。
示例一
下面的例子展示了如何使用 String.fromCodePoint
方法创建一个包含「A中」和「🦄」三个字符的 Unicode 字符串:
const str = String.fromCodePoint(0x0041, 0x4e2d, 0x1F984); console.log(str); // 输出 "A中🦄"
示例二
下面的例子展示了如何将一个字符串转换为一个包含 Unicode 字符串的数组:
const str = 'A中🦄'; const arr = Array.from(str, char => char.codePointAt(0)); console.log(arr); // 输出 [65, 20013, 129412],分别是「A」、「中」和 "UNICORN FACE" 的码位。
总结
ES6 中的 String.fromCodePoint
方法提供了一种更加方便、简洁的方式来创建 Unicode 字符串,使得我们能够更加优雅地书写代码。同时,它也为我们处理需要处理 Unicode 字符串的场景提供了便利。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64eae266f6b2d6eab359f9a8