1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-24 18:32:22 +00:00
es6tutorial/docs/intro.md
2014-04-25 19:44:41 +08:00

87 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ECMAScript 6简介
ECMAScript 6以下简称ES6是JavaScript语言的下一代标准正处在快速开发之中大部分已经完成了预计将在2014年底正式发布。Mozilla将在这个标准的基础上推出JavaScript 2.0。
ES6的目标是使得JavaScript语言可以用来编写大型的复杂的应用程序成为企业级开发语言。
## ECMAScript和JavaScript的关系
ECMAScript是JavaScript语言的国际标准JavaScript是ECMAScript的实现。
1996年11月JavaScript的创造者Netscape公司决定将JavaScript提交给国际标准化组织ECMA希望这种语言能够成为国际标准。次年ECMA发布262号标准文件ECMA-262的第一版规定了浏览器脚本语言的标准并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。
之所以不叫JavaScript有两个原因。一是商标Java是Sun公司的商标根据授权协议只有Netscape公司可以合法地使用JavaScript这个名字且JavaScript本身也已经被Netscape公司注册为商标。二是想体现这门语言的制定者是ECMA不是Netscape这样有利于保证这门语言的开放性和中立性。因此ECMAScript和JavaScript的关系是前者是后者的规格后者是前者的一种实现。在日常场合这两个词是可以互换的。
## ECMAScript的历史
1998年6月ECMAScript 2.0版发布。
1999年12月ECMAScript 3.0版发布成为JavaScript的通行标准得到了广泛支持。
2008年7月由于对于下一个版本应该包括哪些功能各方差异太大争论过于激进ECMA开会决定中止ECMAScript 4.0的开发将其中涉及现有功能改善的一小部分发布为ECMAScript 3.1而将其他激进的设想扩大范围放入以后的版本由于会议的气氛该版本的项目代号起名为Harmony和谐。会后不久ECMAScript 3.1就改名为ECMAScript 5。
2009年9月ECMAScript 5.0版正式发布。Harmony项目则一分为二一些较为可行的设想定名为Javascript.next继续开发后来演变成ECMAScript 6一些不是很成熟的设想则被视为JavaScript.next.next在更远的将来再考虑推出。
2011年6月ECMAscript 5.1版发布并且成为ISO国际标准ISO/IEC 16262:2011
2013年3月ECMAScript 6草案冻结不再添加新功能。新的功能设想将被放到ECMAScript 7。
2013年12月ECMAScript 6草案发布。然后是12个月的讨论期听取各方反馈。
2014年12月ECMAScript 6预计将发布正式版本。
ECMA的第39号技术专家委员会Technical Committee 39简称TC39负责制订ECMAScript标准成员包括Microsoft、Mozilla、Google等。TC39的总体考虑是ECMAScript 5与ECMAScript 3基本保持兼容较大的语法修正和新功能加入将由JavaScript.next完成。当前JavaScript.next指的是ECMAScript 6当第六版发布以后将指ECMAScript 7。TC39预计ECMAScript 5会在2013年的年中成为JavaScript开发的主流标准并在今后五年中一直保持这个位置。
## 部署进度
由于ES6还没有定案有些语法规则还会变动目前支持ES6的软件和开发环境还不多。各大浏览器的最新版本对ES6的支持可以查看[kangax.github.io/es5-compat-table/es6/](http://kangax.github.io/es5-compat-table/es6/)。
## 使用方法
Google公司的V8引擎已经部署了ES6的部分特性。使用node.js 0.11版,就可以体验这些特性。
node.js的0.11版还不是稳定版本,要使用版本管理工具[nvm](https://github.com/creationix/nvm)切换。下载nvm以后进入项目目录运行下面的命令。
```bash
source nvm.sh
nvm use 0.11
node --harmony
```
启动命令中的--harmony选项可以打开大部分的ES6功能但是还是--use_strict选项打开块级作用域功能、--harmony_generators选项打开generator功能。使用下面的命令可以查看所有与ES6有关的选项。
```bash
node --v8-options | grep harmony
```
另外可以使用Google的[Traceur](https://github.com/google/traceur-compiler)将ES6代码编译为ES5。
```bash
# 安装
npm install -g traceur
# 运行ES6文件
traceur /path/to/es6
# 将ES6文件转为ES5文件
traceur --script /path/to/es6 --out /path/to/es5
```
## ECMAScript 7
2013年3月ES6的草案封闭不再接受新功能了。新的功能将被加入ES7。
ES7可能包括的功能有
1**Object.observe**:对象与网页元素的双向绑定,只要其中之一发生变化,就会自动反映在另一者上。
2**Multi-Threading**多线程支持。目前Intel和Mozilla有一个共同的研究项目RiverTrail致力于让JavaScript多线程运行。预计这个项目的研究成果会被纳入ECMAScript标准。
3**Traits**它将是“类”功能class的一个替代。通过它不同的对象可以分享同样的特性。
其他可能包括的功能还有更精确的数值计算、改善的内存回收、增强的跨站点安全、类型化的更贴近硬件的低级别操作、国际化支持Internationalization Support、更多的数据结构等等。