es6与es5方法实现上的区别(纯属个人瞎掰瞎总结,为了更好的掌握es6 es5而已,勿认真)

    1. 优先严格模式 使用函数参数默认值 函数体就在严格模式下运行
    2. 更规范
      1. es5 api如果期望基础类型但参数不是对应的类型会自动进行类型转换, es6则可能会也可能不会
        1. 正例 [1,2,3,4,5,6,7,8].copyWithin(1, 4,’6’) 2**’5’
        2. 反例 Number.isInteger(‘25’)
      2. 将一些全局对象上的方法模块化,且遵循上一条规则,如
        1. Number.isNaN(“NaN”)
        2. isNaN(“NaN”) )
      3. 块级作用域 函数声明表达式 不能省略 {}
      4. reflect 将Object对象的一些明显属于语言内部的方法 放到Reflect对象上
      5. 函数 name属性及toString
    3. 更灵活
      1. 结构赋值
      2. 箭头函数
      3. 属性简写、属性参数简写,函数参数尾逗号、catch参数可省略
    4. 结果更精准
      1. 数组空位问题 var a = 0; Array(6).find(item => {a++;return item>0})
      2. NaN问题 用 Array.indexOf与Array.includes比较
      3. JSON.stringify()
      4. Array.sort 排序算法变为稳定的
    5. 性能优化
      1. 函数尾调用
    6. 对es5 对象及属性特性的扩展 属性四特性 值、读写、可遍历、可配置 及对象的扩展性,属性查询遍历
      1. Proxy
      2. Reflect
    7. api扩展
      1. 数组
      2. 数值
      3. 字符串
      4. 对象
    8. 异步流程控制
      1. Promise
      2. Generator
      3. async
    9. 其他
      1. Symbol 更好的定义常量
      2. 更多数据结构 Set WeakSet Map WeakMap