JS ES7/8新增特性

ES7

求幂运算符() **

let a=3;
console.log(a**=2);//9 此时a等于3的2次方,结果为9

Array.prototype.includes()方法
在数组中查找某个元素是否存在,返回值为布尔值,存在true,不存在false
与indexOf区别
共同点:
通过索引值逐个去查询目标元素,使用全等符(===)进行判断
不同点:
返回值不同,Array.prototype.includes()方法可以对NaN进行判断,认为NaN等于NaN

let arr=['a','b','c',1,2,3];
//一个参数情况
console.log(arr.includes(2));//true
console.log(arr.includes('f'));//false
//两个参数情况
console.log(arr.includes(2,2));//true 第二个参数表示从哪个下标位置开始找
console.log(arr.includes('b',2));//false

ES8

Object.entries()方法
将某个对象的可枚举(遍历)属性与值按照二维数组的方式返回

Object.entries({one:1,two:2})//[['one',1],['two',2]]
Object.entries([1,3])//[['0',1],['1',3]]

Object.values()方法
返回键值对中的值,结果是一维数组

Object.values({one:1,two:2});//[1,2]
Object.values({0:'a',1:'b',2:'c'});//['a','b','c']
Object.values([1,3]);//[1,3]

字符串填充padStart(),padEnd()
使得字符串达到固定长度.有两个参数,字符串目标长度和填充内容

'react'.padStart(10,'m');//mmmmmreact
'react'.padEnd(10,'m');//reactmmmmm
'react'.padStart(3,'m');//react

async,await异步解决方案(重难点)
async是异步的意思,用于声明异步函数,返回一个Promise对象
await是等待的意思,用于等待异步完成,再执行函数体内后面的语句
await只能在async函数中使用;通过try/catch来捕获异常;
在异步函数中,状态错误可以通过catch捕获到,如果是throw抛出错误,捕获不到
优点:代码结构更加简洁,逻辑也更加清晰,避免回调地狱

//生成一个Promise实例
let p =new Promise(function(resolve,reject){
  setTimeout(function(){
//确定promise的状态为成功
  resolve(30);
  },2000)
})
//利用async await来完成后续代码
async function foo(){
   let result =await p;//等待Promise对象的处理结果
   console.log(result);
   console.log('next code');
}
foo();
//通过try/catch来捕获异常
//生成一个Promise实例
let p =new Promise(function(resolve,reject){
  setTimeout(function(){
//确定promise的状态为失败
  reject("出错了");
  //throw "出错啦 出错啦!";//在异步函数中,状态错误可以通过catch捕获到,如果是throw抛出错误,捕获不到
  },2000)
})
 async function foo(){
  try{//等待Promise对象的处理结果
  await p;//这里返回错误
     }catch(error){
  console.log(error);//这里捕捉到错误
    }
 }
 foo();
发布了22 篇原创文章 · 获赞 26 · 访问量 621

猜你喜欢

转载自blog.csdn.net/HwH66998/article/details/104600245