ES7-11新特性

ES7-11新特性

ES7新特性

Includes():表示某个数组是否包含给定的值,返回true和false

                     indexOf()是之前的写法,返回1和-1

**幂运算:2**4 = 2*2*2*2*2

                  Math.pow(2,4)是之前的写法

ES8新特性

async和await:这2个结合可以让异步代码像同步代码一样

async函数:

  • async函数的返回值为promise对象
  • promise对象的结果由async函数执行的返回值决定

await表达式:

  • 必须写在asyns函数中
  • await右侧的表达式一般为promise对象(如果返回的结果不是一个promise类型的对象,那么返回的结果就是一个成功的promise)
  • await返回的值是promise成功的值
  • await的promise失败了,就会抛出异常(就是一个失败的promise),需要通过try...catch...捕获处理
  • 总体返回的值可以用then()处理

对象方法的扩展:

values(),entries(),keys()

ES9新特性

Rest参数与spread扩展运算符在ES6中已经引入,不过ES6中只针对子数组

在ES9中为对象提供了像数组一样的rest参数和扩展运算符

Rest参数:a( { a,b,...c } ){ 方法体 }

spread扩展运算符:{ ...a,...b,...c }    其中abc都是对象

正则扩展

命名捕获分组

反向断言

dotAll模式

ES10新特性

对象扩展方法:

fromEntries:创建对象,和entries()是一个逆运算

  • 二维数组
let x = Object.fromEntries(
    [
        ['name','lct'],
        ['age',20]
    ]
)
console.log(x)//{name: "lct", age: 20}
  • Map
const a = new Map()
a.set('name','lct')
a.set('age',20)
let x = Object.fromEntries(a)
console.log(x)//{name: "lct", age: 20}

字符串的扩展方法:

trimStart和trimEnd:指定清除字符串左侧还是右侧空白

                                  trim 清除字符串两边的空白,这是es5里面的

flat和flatMap:

flat:将一个数组维度降低,比如从三维转成二维

const arr1 = [1,2,3,[4,5]]
const arr2= [1,2,[3,[4,5]]]
console.log(arr1.flat())//打印出[1,2,3,4,5]
console.log(arr2.flat())//打印出[1,2,3,[4,5]]
//这里可以传一个参数,表示数组深度是2,直接从三维数组变成一维数组
console.log(arr2.flat(2))//打印出[1,2,3,4,5]
  • flatMap:map()返回的结果如果是一个多维数组,则用flatMap就可以直接将返回降维,只能降1维
    [2, 3, 4].flatMap((x) => [x * 2])//[4, 6, 8]
    // 相当于 [[2, 4], [3, 6], [4, 8]].flat()
    

    Symbol的扩展

可以通过description可以获取symbol的描述

ES11新特性

公有属性和私有属性

  • 公有属性    name;
  •  私有属性    #age;

字符串扩展方法

  • matcAll():数据的批量提取

可选链式操作符    ?.  

function main(config){

  const dbName1 = config && config.db && config.db.name

  //上面这是之前的写法,如果main不传会报错,现在不传也不会报错

  const dbName2 = config?.db?.name  //现在的写法

  console.log(dbName2)//拿到了222

}

main({ db:{ name:'222', age:20 }, ab:{ name:'333', age:30 } })

新类型:BigInt类型  大整形

let n = 521n

console.log(n,typeof(n))// 521n   "bigint"

let a = 123

console.log(BigInt(a))//123n,不能传入浮点型数
  • 应用于大数值运算
    let max = Number.MAX_SAFE_INTEGER//最大的安全型整数
    
    console.log(max)//9007199254740991
    console.log(max+1)//9007199254740992
    console.log(max+2)//9007199254740992
    //max+1和max+2打印出的结果是一样的,就容易出现问题
    
    BigInt(max)+BigInt(1)//9007199254740992n
    BigInt(max)+BigInt(2)//9007199254740993n
    //这样写打印出来的就是正确的啦

     

globalThis:绝对的全局对象,始终指向Window

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值