# ES6 全部特性

# ES2015

  1. let/const

  2. 箭头函数

  3. iterator 迭代器

    • (解构赋值,剩余/扩展运算符,生成器,for of 循环)
    • Array Map Set String TypedArray(类数组) 函数的 arguments 对象 NodeList 对象 自带 Symbol.iterator 方法
    • for in for of 区别
    // for...in 语句以任意顺序迭代对象的可枚举属性。
    //for...of 语句遍历可迭代对象定义要迭代的数据。
    Object.prototype.objCustom = function() {}
    Array.prototype.arrCustom = function() {}
    
    let iterable = [3, 5, 7]
    iterable.foo = 'hello'
    
    for (let i in iterable) {
      console.log(i) // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
    }
    
    for (let i in iterable) {
      if (iterable.hasOwnProperty(i)) {
        console.log(i) // logs 0, 1, 2, "foo"
      }
    }
    
    for (let i of iterable) {
      console.log(i) // logs 3, 5, 7
    }
    
  4. 解构赋值

    • 解构赋值可以直接使用对象的某个属性,而不需要通过属性访问的形式使用

# ES2016

  1. 数值扩展
  • 指数运算符(**):数值求幂(相当于 Math.pow())
  1. 数组扩展
  • includes():是否存在指定成员