ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ES6、ES7、ES8

2021-08-17 12:01:23  阅读:270  来源: 互联网

标签:ES7 ES6 arr const name pre ES8 毫秒 fn


原链接: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?.()

 





标签:ES7,ES6,arr,const,name,pre,ES8,毫秒,fn
来源: https://www.cnblogs.com/junechen/p/15151697.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有