Unicode 支持

16 位二进制数称为一个码元,原先的 UTF-16 中一个码元表示一个字符。现今的 UTF-16 中,一个代码点表示一个字符,一个代码点由一个码元或者两个连续的码元表示,也就是一个字符由一个码元或者两个连续的码元表示。

字符串的 codePointAt() 方法接收一个索引值,返回字符串中对应码元索引的代码点。如果字符由单个码元表示,返回该码元;如果字符由两个码元表示,则第一个码元索引返回这两个码元组成的代码点,第二个码元索引返回单个码元(意义不大)。

String.fromCodePoint() 方法接收一个代码点,返回这个代码点表示的单个字符构成的字符串。

字符串的 normalize() 方法将字符串标准化,主要用于比较字符串。

正则表达式中的 'u' 标志表示正则根据字符匹配而不是码元,不使用该标志则根据码元匹配。

字符串改动

includes()/startsWith()/endsWith() 方法接收两个参数,第二个参数可选。第一个参数类型为字符串,若不传第二个参数,此时如果第一个参数在调用方法的字符串中存在/位于起始位置/位于末尾位置,则返回 true,否则返回 false。第二个参数为索引值,当传入时,前两个方法从该索引处开始匹配;而 endsWith() 方法的第二个参数表示从末尾开始向前数的字符数,然后开始从该索引处匹配,例如第二个参数为 5,字符串长度为 20,则从索引 15 开始匹配。这三个方法不能接收正则表达式。

repeat() 方法返回调用该方法的字符串重复指定次数得到的新字符串。

正则改动

无标志的正则对象,属性 lastIndex 对其无影响。对于有标志的正则对象,lastIndex 保存匹配到的字符(串)后面的那个字符的索引,下次匹配从该索引开始。如果匹配失败,则 lastIndex 重置为 0。

具有 'y' 标志的正则对象(称为 sticky 正则),只有调用正则对象的方法时,lastIndex 属性才会生效;如果使用 '^' 匹配字符串起始位置,sticky 正则只会从起始位置开始匹配,如果此时 lastIndex 不为 0,则匹配不可能成功。

正则对象的 sticky 属性为只读的布尔值,用于判断该对象是否有 'y' 标志。

在复制正则表达式时,可以将已有的正则对象传给 RegExp 构造器,第二个参数可以传入一个标志,用于替换已有正则对象中的标志来创建新的正则对象。

正则对象的 source 属性返回正则表达式去除标志后的字符串表示;flags 属性返回标志的字符串表示。

模板字面量

用反引号( ` )括起来的字符串称为模板字面量,如果字符串中包含反引号,需要使用反斜杠转义,单引号、双引号不需要转义。

模板字面量允许换行,也可以在需要换行的位置使用 '\n'。

模板字面量内部,使用 '${}' 可以在其中插入变量或者表达式,称为替换位。替换位也可以嵌套使用。

标签函数的目的之一是用于将模板字面量里面插入的所有变量或者表达式转换成最终结果生成最终的字符串并返回。这个函数的第一个参数接收模板字面量中由插入的内容作为分隔符分割的字符串字面值作为元素的数组,后面的参数为这些插入的内容按照在模板字面量中的顺序对应的最终值。即使插入的内容位于起始位置,起始位置依然为数组的第一个元素,此时该元素为空字符串。标签函数不需要使用括号,只需要在函数名后面紧跟模板字面量即可。

String.raw 标签函数返回模板字面量中转义之前的所有字符(包括转义字符)构成的字符串。这个标签函数的参数形式与上一段介绍的标签函数相似,除了第一个参数还有一个 raw 属性,这个属性是第一个参数的所有元素对应的转义之前的元素构成的数组。

参考

[1] Zakas, Understanding ECMAScript 6, 2017.

 posted on 2024-04-27 22:28  x-yun  阅读(8)  评论(0编辑  收藏  举报