最全Es6 - Es11( Es9篇)

文末有其他篇链接

Es9

1、扩展运算符和rest参数

Rest参数与 spread 扩展运算符 在 Es6 中已经引入,不过在 Es6 中只针对与数组,在Es9中为对象提供了像数组一样的rest参数和扩展运算符。

let person = { name: '小明', age: 22}
let newPerson = {...person, address: 'gz'} // { name: '小明', age: 22, address: 'gz'}
 // 形参使用解构直接获取对象中需要用到的属性
 function sayHello({name,age,city,...otherDetail} ) {
          
            console.log('你好!我叫' + name+'今年'+age+'岁' + ',来自' + city)
            console.log(otherDetail)
}

 let p = {
            name: '小明',
            age: 25,
            city: '深圳',
            hobby: [],
            married: false
}

sayHello(p)

2、正则扩展-命名捕获分组

如果正则中没有命名分组,则groups 为undefined

const str = "04-25-2017";
const reg = /(?<month>\d{2})-(?<day>\d{2})-(?<year>\d{4})/;
const groups = str.match( reg ).groups // {month: "04", day: "25", year: "2017"}

const {day, month, year} = groups

3、正则扩展-反向断言

反向断言和正向断言的行为一样,只是方向相反。
反向肯定断言使用语法 (?<=…)

比如我们想获取所有的人民币金额,但是不获取其它货币(比如美元):

const regex = /(?<=¥)\d+(\.\d*)?/;
regex.test('¥1.9');     // true
regex.test('$1.2');      // false

反向否定断言使用语法 (?<!..),和正向断言正好相反:

const regex = /(?<!¥)\d+(\.\d*)?/;
regex.test('¥1.9');     // false???
regex.test('$1.2');      // true

在上面的例子中,regex.test(‘¥1.9’) 的结果是 true,并不是我们认为的 false。

4、正则扩展-dotAll模式

为 JavaScript 的正则表达式增加了一个新的标志 s 用来表示 dotAll。以使 . 可以匹配任意字符。

/foo.bar/s.test('foo\nbar');    // true
const re = /foo.bar/s;  //  等价于 const re = new RegExp('foo.bar', 's');
re.test('foo\nbar');    // true
re.dotAll;      // true
re.flags;       // "s"

上一篇:最全Es6 - Es11( Es8篇)
下一篇:最全Es6 - Es11( Es10篇)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值