ES6总结(一)

Babel转码器

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在浏览器或其他环境执行。

  • 可将箭头函数转为普通函数
  • Babel也可以用于浏览器

字符串的扩展

  • 字符的Unicode表示法

    JavaScript允许采用 \uxxxx 形式表示一个字符,其中“xxxx”表示字符的码点,,这种表示法只限于 \u0000 --\uFFFF 之间的字符。超出这个范围的字符,必须用两个双字节的形式表 达。
    汉字就是用两个双字节表示的,也可以用 \uxxxxx 表示, \uxxxxx 只要将码点放入大括号,就能正确解读该字符。

    • JavaScript共有6种方法可以表示一个字符
      ‘z’, ‘\172’, ‘\x7A’ , ‘\u007A’ , '\u{7A}
  • codePointAt()
    • codePointAt() 方法的参数,是字符在字符串中的位置(从0开始),返回的是码点的十进制值,是测试一个字符由两个字节还是由四个字节组成的简单方法; 定义在字符串的实例对象上
    • 用 for…of 循环,会正确识别32位的UTF­16字符。
  • String.fromCodePoint()
    • String.fromCharPoint() 用于从码点返回对应字符,但是这个方法不能识别32位的UTF­16字符 (Unicode编号大于oxFFFF),溢出的话,最高位会被舍弃;如果法有多个参数,则它们会被合并成一个字符串返回
    • String.fromCodePoint() 可以识别0xFFFF的字符,弥补了String.fromCharPoint() 方法的不足; 该方法定义在String对象上
  • 字符串的遍历器接口

    ES6为字符串添加了遍历器接口,使得字符串可以被 for…of 循环遍历, 这个遍历器大的优点是可以识别大于 0xFFFF 的码点

  • at()
    • charAt() : 返回字符串给定位置的字符,但该方法不能识别码点大于 0xFFFF 的字符
    • at() :可以识别码点大于 0xFFFF 的字符,返回正确的字符
  • normalize()

    为了表示语调和重音符号,Unicode提供了两种方法。一种是直接提供带重音符号的字符;另一种是提供合成符号,即原字符与重音符号的合成,两个字符 合成一个字符。这两种表示方法,在视觉和语义上都等价,但是JavaScript不能识别。

    • ES6提供字符串实例的 normalize() 方法,用来将字符的不同表示方法统一为同样的形式,这称为Unicode正 规化。
    • 不过,normalize() 方法目前不能识别三个或三个以上字符的合成。这种情况下,还是只能使用正则表达式,通 过Unicode编号区间判断。
  • includes(), startsWith(), endsWith()

    可以用来确定一个字符串是否包含在另一个字符串中。

    • includes():返回布尔值,表示是否找到了参数字符串。
    • startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
    • endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
    • 有两个参数,第一个参数为 字符串, 第二个参数为起始位置
    • ,使用第二个参数 n 时,endsWith 的行为与其他两个方法有所不同。它针对前n个字符,而其他 两个方法针对从第n个位置直到字符串结束。
  • repeat()

    repeat() 方法返回一个新字符串,表示将原字符串重复n次。

    • 参数如果是小数,会被取整。
    • 参数是负数或者 Infinity,会报错。
    • 参数是0到­1之间的小数,则等同于0,这是因为会先进行取整运算。
    • 参数NaN等同于0。
    • 参数是字符串,则会先转换成数字。
  • padStart(),padEnd()

    ES7推出了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart 用于头部 补全,padEnd 用于尾部补全。

    • 有两个参数
    • 第一个参数用来指定字符串的小长度
    • 第二个参数是 用来补全的字符串。
    • 如果原字符串的长度,等于或大于指定的小长度,则返回原字符串
    • 如果省略第二个参数,则会用空格补全长度
  • 模板字符串

    模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可 以用来定义多行字符串,或者在字符串中嵌入变量。

    • 如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。
    • 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。
    • 模板字符串中嵌入变量,需要将变量名写在 ${} 之中
    • 大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。
    • 模板字符串之中还能调用函数
  • 标签模板

    模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能。
    标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是 它的参数。

  • String.raw()

    String.raw() 方法,往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠) 的字符串,对应于替换变量后的模板字符串。如果原字符串的斜杠已经转义,那么 String.raw() 不会做任何处理。
    String.raw() 方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一 步作为字符串来使用。也可以以作为正常的函数使用。这时,它的第一个参数,应该是一个具有raw属性的对象, 且raw属性的值应该是一个数组。

正则的扩展

  • RegExp构造函数
    在ES5中,RegExp构造函数只能接受字符串作为参数。
    ES6允许RegExp构造函数接受正则表达式作为参数,这时会返回一个原有正则表达式的拷贝。如果使用RegExp构造函数的第二个参数指定修饰符,则返回的正则表达式会忽略原有的正则表达式的修饰 符,只使用新指定的修饰符。
  • 字符串的正则方法
    • 字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。
    • ES6将这4个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在 RegExp对象上。
  • u修饰符
    用来正确处理大于 \uFFFF 的Unicode字符,会正确处理四个字节的UTF­16编码。
    一旦加上u修饰符号,就会修改下面这些正则表达式的行为。
    • 点字符:点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于 \uFFFF 的Unicode字 符,点字符不能识别,必须加上u修饰符。
    • Unicode字符表示法:ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上u修饰符,才能识别。
    • 量词:使用u修饰符后,所有量词都会正确识别码点大于\uFFFF的Unicode字符,另外,只有在使用u修饰符的情况下,Unicode表达式当中的大括号才会被正确解读,否则会被解读为量词
    • 预定义模式:u修饰符也影响到预定义模式,能否正确识别码点大于\uFFFF的Unicode字符。
    • i 修饰符:有些Unicode字符的编码不同,但是字型很相近,比如,\u004B与\u212A都是大写的K,不加 u 修饰符,就无法识别非规范的K字符
  • y修饰符
    叫做“粘连”(sticky)修饰符
    y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处 在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘 连”的涵义。
    • y修饰符的设计本意,就是让头部匹配的标志ˆ在全局匹配中 都有效。
    • 与y修饰符相匹配,ES6的正则对象多了sticky属性,表示是否设置了y修饰符
  • flags属性
    ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。
  • RegExp.escape()
    字符串必须转义,才能作为正则模式。
    字符串转义以后,可以使用RegExp构造函数生成正则模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值