首页 > 编程笔记
ES6标准简介
ECMAScript 6(简称 ES 6)目前基本已经成为业界标准,它的普及速度比 ES 5 要快很多,主要原因是现代浏览器对 ES 6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES 6 中绝大多数的特性。
1995 年 12 月,Sun 公司与网景公司一起研发了 JavaScript。
1996 年 3 月,网景公司发表了支持 JavaScript 的网景导航者(浏览器)2.0 说明。由于 JavaScript 作为网页的客户端脚本语言非常成功,微软于 1996 年 8 月将其引入 Internet Explorer 3.0 中,该软件支持与 JavaScript 兼容的 JScript。
1996年11月,网景公司将 JavaScript 提交给欧洲计算机制造商协会(ECMA)进行标准化。ECMA-262 的第一个版本于 1997 年 6 月被 ECMA 组织采纳,这也是 ECMAScript(简称 ES)的由来。
迄今为止有 7 个 ECMA-262 版本发布,代表着一次次的 JavaScript 更新,具体的版本和详细更新内容如表1所示。
ECMAScript 6 是对语言的重大更新,是自 2009 年 ES 5 标准化以来语言的首次更新。
事实上,许多浏览器已经支持部分 ES 6 特性,并继续努力实现其余特性。这意味着,在一些已经实现部分特性的浏览器中,开发者符合标准的 JavaScript 代码已经可以正常运行,可以更加方便地实现很多复杂的操作,提高开发人员的工作效率。
以下是 ES 6 排名前 10 位的最佳特性列表(排名不分先后):
1995 年 12 月,Sun 公司与网景公司一起研发了 JavaScript。
1996 年 3 月,网景公司发表了支持 JavaScript 的网景导航者(浏览器)2.0 说明。由于 JavaScript 作为网页的客户端脚本语言非常成功,微软于 1996 年 8 月将其引入 Internet Explorer 3.0 中,该软件支持与 JavaScript 兼容的 JScript。
1996年11月,网景公司将 JavaScript 提交给欧洲计算机制造商协会(ECMA)进行标准化。ECMA-262 的第一个版本于 1997 年 6 月被 ECMA 组织采纳,这也是 ECMAScript(简称 ES)的由来。
ES 6 的前世今生
ECMAScript 是一种由 ECMA 国际(前身为欧洲计算机制造商协会)通过 ECMA-262 标准化的脚本程序设计语言,该语言在互联网上应用广泛,往往被称为 JavaScript 或 JScript,但实际上后两者是 ECMA-262 标准的实现和扩展。迄今为止有 7 个 ECMA-262 版本发布,代表着一次次的 JavaScript 更新,具体的版本和详细更新内容如表1所示。
版本 | 发表日期 | 与之前版本的差异 |
---|---|---|
1 | 1997 年 6 月 | 首版 |
2 | 1998 年 6 月 | 格式修正,以使得其形式与 ISO/IEC16262 国际标准一致。 |
3 | 1999 年 12 月 | 强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理、错误定义更加明确,数据输出的格式化及其他改变。 |
4 | 放弃 | 由于语言的复杂性出现分歧,第 4 版被放弃,其中的部分成为第 5 版及 Harmony 的基础。 |
5 | 2009 年 12 月 |
新增严格模式(Strict Mode)。在该版本中提供更彻底的错误检查,以避免因语法不规范而导致的结构出错。 澄清了许多第3版中的模糊规范,增加了部分新功能,比如 getters 及 setters,支持 JSON 以及在对象属性上更完整的。 |
6 | 2015 年 6 月 | 反射多个新的概念和语言特性。ECMAScript Harmony 将会以 ECMAScript 6 发布。 |
6.1 | 2016 年 6 月 | 多个新的概念和语言特性。 |
ECMAScript 6 是对语言的重大更新,是自 2009 年 ES 5 标准化以来语言的首次更新。
为什么要使用 ES 6
ES 6 是一次重大的版本升级,与此同时,由于 ES 6 秉承着最大化兼容已有代码的设计理念,过去编写的 JS 代码还能正常运行。事实上,许多浏览器已经支持部分 ES 6 特性,并继续努力实现其余特性。这意味着,在一些已经实现部分特性的浏览器中,开发者符合标准的 JavaScript 代码已经可以正常运行,可以更加方便地实现很多复杂的操作,提高开发人员的工作效率。
以下是 ES 6 排名前 10 位的最佳特性列表(排名不分先后):
- Default Parameters(默认参数)
- Template Literals(模板文本)
- Multi-line Strings(多行字符串)
- Destructuring Assignment(解构赋值)
- Enhanced Object Literals(增强的对象文本)
- Arrow Functions(箭头函数)
- Promises
- Block-Scoped Constructs Let and Const(块作用域构造Let和Const)
- Classes(类)
- Modules(模块)