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