JS知识点回顾(3)ES6(let+const,解构赋值,箭头函数)

231 阅读1分钟

var、let、const

  1. var 是函数级作用域,let是块级作用域

  2. let不允许在相同作用域内,重复声明同一个变量:

  3. const声明一个只读的常量,且声明后,常量的值是不能改变的

  4. const命令声明的常量也是不提升,只能在声明的位置后面使用。

  5. constlet一样不可重复声明

  6. 复合类型的变量,变量名不指向数据,它是指向数据所在的地址,const只保证变量名指向的地址是不变的,并不能保证它地址的数据是不变的,所以将一个对象声明为常量必须非常小心.

    const n = {};
    
      n.prop = aaa;
    
      console.log(n.prop);    // aaa
    
      n = {}; // 报错
    

解构赋值

  • 数组解构

    • 数组的拼接

      // 数组的拼接
      let a = [0,1,2]
      let b = [3,4,5]
      let c = a.concat(b)
      console.log(c) // [0,1,2,3,4,5]
      
      let d = [...a,...b]
      console.log(d) // [0,1,2,3,4,5]
      
    • 数组的克隆

      let a = [0,1,2,3]
      let b = [...a]
      b.push(4)
      console.log(a) // [0,1,2,3]
      console.log(b) // [0,1,2,3,4]
      
  • 拓展运算符

    // 使用扩展运算符
    let name = { name:"zcf" }
    let age = { age:28 }
    let person = {...name,...age}
    console.log(person) // { name: 'zcf', age: 28 }0
    

    相当于

    let name = { name:"zcf" }
    let age = { age:28 }
    let person = {}
    Object.assign(person,name,age)
    console.log(person) // { name: 'zcf', age: 28 }
    

箭头函数中的this

  • 箭头函数没有自己的this, 它的this是继承而来;

  • 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象,

  • 定义它的时候,可能环境是window;

  • 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this

    总而言之,由于箭头函数不绑定this, 它会捕获其所在(即定义的位置)上下文的this值, 作为自己的this值