ES6、ES7、ES8

原链接:https://juejin.cn/post/6995334897065787422

 

1、var、et、const

变量提升、暂时性死区

2、函数参数默认值

3、扩展运算符

let   arr1=[1,2,3],

  arr2=[3,4,5],

  arr3=[6,7,8];

let arr=[...arr1,...arr2,...arr3]

4、剩余参数

当函数的参数个数不确定时

function(name,...params){

  console.log(name);

  console.log(params)

}

5、模板字符串

let name='Amelia'
console.log(`我的名字叫${name}`)

6、Object.keys()

7、箭头函数

普通函数和箭头函数的区别:

   1)、箭头函数不能作为构造函数,不能使用new;

   2)、箭头函数没有自己的this;

   3)、箭头函数没有arguments对象;

   4)、箭头函数没有原型对象

 

8、Array.forEach

array.forEach((item,index,arr)=>{})

9、Array.map 返回处理过后的新数组

array.map((item,index,arr)=>{})

10、Array.filter

array.filter((item,index,arr)=>{})

11、Array.some

只要有一项为真,则返回true

12、Array.every

全部为真返回真,否则返回false

13、Array.reduce

第一个参数callback函数,pre为上次return的值,next为本次遍历的项

第二个参数为初始值,也就是第一个pre

eg:

//求和

const arr=[1,2,3,4]

const total=arr.reduce((pre,next)=>pre+next,0)

// 统计元素出现个数 const str='ahdjfhdjfhdjfhdjf'; const arr=str.split(''); const totalObj=arr.reduce((pre,next)=>{     if(pre[next]){         pre[next]++     }else{         pre[next]=1     }     return pre },{}) console.log(totalObj)   //{ a: 1, h: 4, d: 4, j: 4, f: 4 } 14、对象属性同名简写   let name="Amelia"
  let age=25   es5写法:   let obj={     name:name,     age:age
  }   let obj={name,age} 15、promise 16、class 类 17、结构赋值 18、find、findIndex 19、for in 和for of   for in 可遍历数组和对象   for of只能遍历数组 20、Set、Map ES7 21、includes 22、Math.pow() ES8 23、Objeck.values 24、async wait
function fn (time) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(`${time}毫秒后我成功啦!!!`)
    }, time)
  })
}

async function asyncFn () {
  // 排队
  const data1 = await fn(3000)
  console.log(data1) // 3秒后 3000毫秒后我成功啦!!!
  const data2 = await fn(1000)
  console.log(data2) // 再过1秒 1000毫秒后我成功啦!!!
  const data3 = await fn(2000)
  console.log(data3) // 再过2秒 2000毫秒后我成功啦!!!
}

function fn (time) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(`${time}毫秒后我成功啦!!!`)
    }, time)
  })
}

async function asyncFn () {
  const arr = [fn(3000), fn(1000), fn(1000), fn(2000), fn(500)]
  for await (let x of arr) {
    console.log(x)
  }
}

asyncFn()
3000毫秒后我成功啦!!!
1000毫秒后我成功啦!!!
1000毫秒后我成功啦!!!
2000毫秒后我成功啦!!!
500毫秒后我成功啦!!!

25、?.和??

const list = null
// do something
if (list && list.length) {
  // do something
}

// 使用可选链
const list = null
// do something
if (list?.length) {
  // do something
}

const obj = {
  cat: {
    name: '哈哈'
  }
}
const dog = obj && obj.dog && obj.dog.name // undefined

// 可选链
const obj = {
  cat: {
    name: '哈哈'
  }
}
const dog = obj?.dog?.name // undefined



const arr = null
// do something
const item = arr && arr[1]

// 可选链
const arr = null
// do something
const item = arr?.[1]

const fn = null
// do something
const res = fn && fn()

// 可选链
const fn = null
// do something
const res = fn?.()

 





上一篇:记一次如何解决低版本jar包里面的bug,不适宜替换成高版本的经历


下一篇:dremio job 处理流程参考