ES6

let const

let

  1. 变量不能重复声明
  2. 块级作用域
  3. 不存在变量提升
  4. 不影响作用域链

    const

  5. 一定要赋初始值

  6. 一般常量用大写
  7. 常量的值不能修改
  8. 块级作用域
  9. 对于数组和对象的元素修改,不算做对常量的修改,不会报错

    var let const的区别

    var
  • ES5
  • 存在变量提升
  • 能对一个变量进行多次声明
  • 全局变量,在函数中是局部变量(在函数内不使用var,变量是全局的)

let const

  • ES6
  • 不存在变量提升
  • 块级作用域
  • 在同一作用域内不存在重复声明变量

var 和 let 可以修改声明的变量,const 一旦声明,常量的值就不能改变。

解构赋值

箭头函数

模板字符串

  1. 声明字符串

let str = ' typeof str 是 String'

  1. 内容中可以直接出现换行符
  2. 变量拼接

    let lovest = ‘kun’
    let out = ${lovest) is love

    rest 参数 …

    …args 返回的是一个数组

    扩展运算符 …

    能将数组转换为逗号分隔的【参数序列】

    Symbol

    迭代器

    生成器

    Promise 异步编程

  • 解决回调地狱
  • 三种状态——pending fulfilled rejected

    1. const p = new Promise(function(resolve,reject){
    2. resolve-成功调用
    3. reject-失败调用
    4. 可以通过调用改变状态
    5. });
    6. p.then(function(value){
    7. value-success
    8. },function(reason){
    9. reason-fail
    10. });

    另起一文介绍【链接待补】

    集合 Set()

    一些方法

  • s.size 获取元素个数

    1. let arr = [1,2,3,4,1]
    2. let s = new Set(arr);
    3. console.log(s.size)//4
  • add()

  • delete()
  • has() 检测有无
  • clear()

    数组去重

    1. let arr = [1,2,3,4,1]
    2. let s = new Set(arr);
    3. console.log(s)

    image.png

    1. let arr = [1,2,3,4,1]
    2. let s = new Set(arr);
    3. console.log(...s)

    image.png

    求交集

    1. let arr = [1,2,3,4,1]
    2. let arr2 = [1,3,5,6,7,8]
    3. let result = [...new Set(arr)].filter(
    4. item => new Set(arr2).has(item)
    5. );
    6. console.log(...result) // 1 3

    求并集

    1. let arr = [1,2,3,4,1]
    2. let arr2 = [1,3,5,6,7,8]
    3. let result = new Set([...arr,...arr2])
    4. console.log(...result) //1 2 3 4 5 6 7 8

    Map

    类似于对象,也是键值对的集合。

    1. //声明 Map
    2. let m = new Map();
    3. //添加元素
    4. m.set('name','kun')
    5. m.set('change',function(){
    6. console.log('balabala')
    7. })
    8. let key ={
    9. school:'atguigu'
    10. }
    11. m.set(key,['杭州','上海'])
    12. //size
    13. // console.log(m.size)
    14. //删除
    15. // m.delete('name')
    16. //获取
    17. console.log(m.get('change'))
    18. console.log(m.get(key))
    19. //清空
    20. m.clear();
    21. //遍历
    22. for(let v of m){
    23. console.log(v)
    24. }
    25. console.log(m)

    class类

    模块化

  • export 暴露

  • import 引入

    babel

    JS编译器

    ES7

    includes()

  • 返回boolean

  • 对比 indexOf 返回-1
    1. let arr = [1,2,3,4,1]
    2. console.log(arr.includes(2)); //true
    3. console.log(arr.indexOf(2)); //1

    ** 幂运算符

    2 ** 10 == Math.pow(2,10)

    ES8

    async await

    async 返回的是promise对象

    await

    返回的是promise成功的值。
    await的promise失败了,就会抛出异常,需要通过try…catch捕获处理。
    async 和 await

    trim 清除字符串两侧的空白

    ES10

    trimStrat()

    trimEnd()

    flat() 将多维数组转化为低维数组

    1. const arr = [1,2,3,4,[5,6]]
    2. console.log(arr.flat()) //[1, 2, 3, 4, 5, 6]

    flatMap() flat()和map()的结合

    map()
    1. const arr = [1,2,3,4,1]
    2. const result= arr.map(item => item*10)
    3. console.log(result) //[10, 20, 30, 40, 10]

    ES11

    Promise.allSettled()

    不管成功还是失败,都会显示

    Promise.all()

    都成功才会成功;有一个失败会显示失败的值

    matchAll() 用于正则数据的批量提取

    ?.可选链操作符

    BigInt 用于大数值运算

    globalThis 绝对全局对象(如果想对全局对象做一些操作时可用)