ES6特性

ES6特性

ECMAScript 6 (以下简称ES6)JavaScript语言的下一代标准,已经在20156月正式发布了。Mozilla公司将在这个标准的基础上,推出JavaScript 2.0ES6的目标,是使得JavaScript语言可以用来编写大型的复杂的应用程序,成为企业级开发语言。标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015

Module & Module Loader

ES2015中加入的原生模块机制支持可谓是意义最重大的feature了,且不说目前市面上五花八门的module/loader库,各种不同实现机制

互不兼容也就罢了(其实这也是非常大的问题),关键是那些模块定义/装载语法都丑到爆炸,但是这也是无奈之举,在没有语言级别的支持下,js只能做到这一

步,正所谓巧妇难为无米之炊。ES2016中的Module机制借鉴自

CommonJS,同时又提供了更优雅的关键字及语法(虽然也存在一些问题)。遗憾的是同样有重大价值的Module

Loader2014年底从ES2015草案中移除了,我猜测可能是对于浏览器而言Module

Loader的支持遭遇了一些技术上的难点,从而暂时性的舍弃了这一feature。但是一个原生支持的模块加载器是非常有意义的,相信它不久后还是会回

归到ES规范中(目前由WHATWG组织在单独维护)

  1. Class

    准确来说class关键字只是一个js里构造函数的语法糖而已,跟直接function写法无本质区别。只不过有了Class的原生支持后,js的面向对象机制有了更多的可能性,比如衍生的extends关键字(虽然也只是语法糖)

  2. Promise & Reflect API

    Promise的诞生其实已经有几十年了,它被纳入ES规范最大意义在于,它将市面上各种异步实现库的最佳实践都标准化了。至于Reflect API,它让js历史上第一次具备了元编程能力,这一特性足以让开发者们脑洞大开。

除此之外,ES2016的相关草案也已经确定了一大部分其他new features。这里提两个我比较感兴趣的new feature

  1. async/await:协程。ES2016async/await实际是对Generator&Promise的上层封装,几乎同步的写法写异步比Promise更优雅更简单,非常值得期待。
  2. decorator:装饰器,其实等同于Java里面的注解。注解机制对于大型应用的开发的作用想必不用我过多赘述了。用过的同学都说好。

而关于纯ES6语法在各大浏览器上的支持情况,可以查看这里。另外推荐一个可以将ES5代码转化为可读的ES6代码的转化器:lebab

上一页
下一页