Es6 in Depth: An Introduction
欢迎来到【深入ES6】(ES6 in Depth)。 从这周开始,我们将要进入ES6(ECMAScript 6)系列, ES6是一个即将要来临的Javascript语言的新版本。ES6 包含了许多新的特性,它让JS(Javascirpt)更加强大、更有表现力,我们也将在以后一周周地对其进行详细探讨。但是,在详细探讨之前,我们应该花点时间来说明 ES6 是什么,你能从中期待些什么。
ECMAScript 是做什么的
现在有 JS 语言的标准化是由 ECMA 组织维护的ECMAScript项目,这组织类似 W3C。ECMAScript 对 JS 进行了以下工作:
- 语法 – 解释规则、关键字、表达式、声明、操作符 等等
- 类型 – 布尔、数值、字符串、对象 等等
- 原型和继承
- 对象(object)和函数(function)中的标准库: JSON, Math, Array 方法,Object自省方法( Object introspection methods), 等等
他们不会对其它语言进行定义,如HTML 、CSS, 或者 Web APIs,如 DOM(Document Object Model),这些是语言等的标准化是不同的。ECMAScript 负责的不仅仅是现今在浏览器中运行的 JS,还有 非浏览器运行环境中的JS,如 node.js。
新标准
上周,ECMAScript 第6版本的最终草稿的说明书已经提交到 Ecma General Assembly ,这意味着什么呢?
这意味着,这个夏天,我们将有一个对JS语言核心的新标准了。
这是一个大新闻。JS语言的标准化从未停止过,之前的于2009年第5版本,ES 标准委员会就开始着手 ES6 了。
ES6 对于 JS 语言来说,是一个比较大的升级。同时,你之前的JS也可以继续运行。ES6 在设计时已经考虑到最大程度地兼容现有的JS代码。实际上,很多浏览器已经支持 ES6 的特性,并且不断地完善中,这意味着你的代码可能已经使用上了ES6的特性。如果你现在没有发现兼容性的问题,你很可能在以后也不会遇到。
版本回顾
ECMAScript 在之前发布有 1,2,3,5 版本。
版本4 在哪里 ?其实,版本4是有计划的,并且已经做了大量的工作在上面,但是最后因其设计过于庞大(野心太大)而不得不放弃了。例如,其还包括有静态类型语言中的泛型和类型推断(generics and type inference)。(强类型?)
ES4 一直都有争论,当标准化委员会最后停止这项工作之后 ,成员们同意发布一个相对合适的版本ES5,并继续开发些新特性。准确来说,这次可以说是“妥协的”,这就是为什么在ES5的说明中有这两句话:
ECMAScript 是个有活力的(JS)语言,其改进并不完整。此版本说明中的一些重要技术会在以后的发布版本在出现。
这话也可以理解为对某些事情的承诺。
兑现承诺
2009年发布的ES5,介绍了 Object.create()
Object.defineProperty()
、getters 、setters、strict mode ,和 JSON 对象。我已经使用了这些所有的特性,我喜欢ES5为JS语言增加的特性。我使用这些特性写出很多有魔法效果的JS代码,以致不能一一点出这些好的特性。对我来说,最重要的改进可能就是Array方法: .map()
.filter()
,等等。
不同的是, ES6是这些年和谐工作的产物。新的语言、库、原有JS语言大量的升级,使得ES6是个未曾挖掘的宝藏。新的特性主要从易用性出发,如箭头函数(arrow function)和简单的字符吕报插值方法,还有些脑洞大开的概念,如 proxies
和 generators
。
ES6 将会改变你写JS代码的方式。
这系列文章将通过代码检查的方式,给JS程度大大展示ES6中的新特性。
我们将从经典的“易忽略特性”开始,这是我一直渴望去深入的部分。所以,下周我们将对 for-of
循环进行探究。