ECMAScript 6.0于2015 年 6 月正式发布了,成为JavaScript 语言的下一代标准。ES6增长的语言特性解决了哪些问题,会给开发者哪些便利,是本文主要探讨的问题。es6
ES5对字符的处理有限,没法很好地处理码点大于0xFFFF
的字符。正则表达式
ES6在string
原生方法中支持码点大于0xFFFF
的字符,取得码点或是遍历,均可以直接操做;而且对字符不一样的表示方法作了统一化。编程
在正则表达式里新增\u
\s
修饰符,使得正则对特殊字符的匹配不须要开发者额外处理。promise
ES6 前异步编程的解决方式:数据结构
ES6提供了原生的Promise对象,统一了用法和标准。异步
缺点async
Generator 函数形式上与普通函数无异,特征有二模块化
function
关键字与函数名之间有一个星号;yield
表达式,来代表函数执行的状态。意义:异步编程
能够交出函数的执行权(即暂停执行)函数
函数体内外的数据交换
能够在 Generator 函数运行的不一样阶段,调整函数行为。包括从外部向内部注入不一样的值,控制返回和抛出错误。
(ES2017 标准引入)
从理解上来讲, async
函数至关于把Generator 函数的星号(*
)替换成async
,将yield
替换成await
。
但相比较generate而言,内置执行器,有更易于理解的语义。
async
函数返回一个 Promise 对象,可使用then
方法添加回调函数。async
函数内部return
语句返回的值,会成为then
方法回调函数的参数。
当函数执行的时候,一旦遇到await
就会先返回,等到异步操做完成,再接着执行函数体内后面的语句。
好比,ES6 将全局方法parseInt()和parseFloat(),移植到Number对象上面。 逐步减小全局性方法,使得语言逐步模块化。
增长let
,const
的变量声明方式,不存在变量提高,不容许重复声明,使语言使用更加严谨。
使得变量的做用域更利于管理,也使得当即执行函数表达式再也不必要了。
让this绑定定义时所在的做用域,而不是指向运行时所在的做用域,也使得表达更加简洁。
ES6推出了模版字符串,使得多行字符串及夹杂变量的字符串写起来更加方便。
对象增长属性名表达式与简洁表示法。
增长遍历器机制,为各类不一样的数据结构提供统一的访问机制。
增长解构的语法,取值更直观方便。
增长class关键字来定义类,过去,生成实例对象的传统方法是经过构造函数。再也不和传统面向对象语言有大的差别。且支持extends。
引入Proxy
对象,能够拦截某些操做并实现自定义行为。
引入 Rflect
对象,能够获取默认操做,能够将默认操做从处理程序转发到目标。
symbol 是一种基本数据类型 ,提供一种机制,保证每一个属性的名字都是独一无二,从根本上防止属性名的冲突。
ES6提供了更多的原生方法,避免了开发者重复造轮子。如字符串的查找。
正则的匹配规则,如新加的y、s修饰符。
增长了set、map的数据结构。
增长Number.EPSILON
等数值方法,使得对数值操做易于在精度方面进行控制。 //虽然JavaScript 不适合进行科学和金融方面的精确计算
增长对对象的操做与读取的API。
对尾递归进行优化,赋予javscript运行复杂度更高的方法的能力。
参考