读书笔记:深入理解ES6 (二)

第2章 字符串和正则表达式

这一章主要介绍了ES6中字符串和正则表达式中的一些(语法上的)更新。下面,我将对平时开发用到比较多的地方提炼出来,供大家阅读使用。

  1. 更好的Unicode支持。

    先说一下前提,在字符串中,字符串里面的字符有两种:一种是有一个编码单元16位表示的BMP字符;另一种是由两个编码单元32位表示的辅助平面字符。这两种字符是不一样的。

    1.1 normalize()方法。

    这个方法接受一个可选的字符串,然后将该字符串转化为相应的标准Unicode的形式,然后可以进行字符串的比较。以确保即使两个字符串原来分别是16位字符和32位字符也照样可以比较。

    1.2 正则表达式 u修饰符

    其实这个添加的 u 修饰符,其目的也是为了帮助字符从编码单元操作模式转化为字符模式,然后带 u 修饰符的正则表达式就可以由原来匹配编码单元改为匹配字符。这样用起来就更加正常化了。

 

  2. 其他字符串变更。

    这一节里面,主要说了几个处理字符串和字串之间关系的方法。

    2.1 includes() 方法。用于识别当前字符串中是否包含了某一个子串。

    2.2 startsWith()方法。顾名思义,找到以某一个子串开始的字符串。

    2.3 endsWith()方法。同样,从后往前查找是否包含某一个子串。

    2.4 repeat()方法。该方法接受一个number类型的参数,然后将调用该方法的字符串重复n次,返回该字符串。

      例如:

1 console.log( "hello".repeat(2) ); // "hellohello"

  3. 其他正则表达式语法变更

    3.1 正则表达式 y 修饰符。

    该属性会通知搜索正则表达式的 lastIndex 属性开始进行,如果在指定位置没有匹配成功,则停止继续匹配。

    3.2 flags属性。

    在ES6的版本中,添加了正则表达式的 flags 属性,该属性可以返回所有应用于当前正则表达式的修饰符字符串。

 

  4. 模板字面量。

  这个就是一对反撇号(``)这个比较有意思,也是比较核心的一个知识点。简单概括来说,可以分为三点:

    4.1 利用它可以实现输出多行字符串。以前的时候,多行字符串依靠拼接,然后加上换行符。有了这个反撇号后就可以直接拼出来多行字符串,并且显示的时候也是多行的字符串。

    4.2 利用它可以实现占位符功能。声明一个变量,然后可以使用 ${ } 来取出这个变量的值。例如:   

1 let name = "Steven",
2     message = `Hello, ${name}.`;
3 
4 console.log(message); // "Hello, Steven."

     4.3 模板标签。这个因为平时用的不是很多。所以,这里简单讲一个思路,有兴趣的同学可以找原书中的细节以及代码。

    这个模板标签究竟是干什么的呢?简单说,它就是一个包含了反撇号表达式的函数。这个函数以反撇号表达式作为参数,然后标签名就是这个函数的函数名。

(本节完)

    

猜你喜欢

转载自www.cnblogs.com/zxxsteven/p/11432659.html