ECMAScript 与 JavaScript
ECMAScript 也是一种脚本语言,通常缩写为 ES,通常会把它看作是 JavaScript 语言的标准化规范。实际上 JavaScript 是 ECMAScript 的扩展语言,因为在 ECMAScript 只是提供了最基本的语法。通俗点来说,就是约定了我们的代码要如何编写,比如我们要怎么定义变量和函数,要怎么定义分支和循环的语句。ECMAScript 只是停留在语言层面,并不能用来在完成实际功能开发。
而我们经常使用的 JavaScript 实现了 ECMAScript 语言的标准,并且在这个基础之上实现了一些扩展,使得我们可以在浏览器环境里面操作 DOM 和 BOM,可以在 Node 环境里面操作读写文件的操作。
总的来说呢,在浏览器环境的 JavaScript 包含了 ECMAScript 和 Web APIs:
在 Node 环境中所使用的 JavaScript 包含 ECMAScript 和 Node APIs:
所以说,JavaScript 语言本身指的就是 ECMAScript。
ECMAScript 2015
随着这些年 Web 这种应用模式深入发展,从 2015 年开始 ECMAScript 保持每年一个版本的迭代。伴随着这些新版本的迭代,很多新特性陆续出现,这就导致 JavaScript 这门语言本身也就变得越来越高级了。
名称 | 标准版本 | 发行时间 |
---|---|---|
ECMAScript 2019(ES2019) | 10 | 2019 年 6 月 |
ECMAScript 2018(ES2018) | 9 | 2018 年 6 月 |
ECMAScript 2017(ES2017) | 8 | 2017 年 6 月 |
ECMAScript 2016(ES2016) | 7 | 2016 年 6 月 |
ECMAScript 2015(ES2015) | 6 | 2015 年 6 月 |
ECMAScript 5.1(ES5.1) | 5.1 | 2011 年 6 月 |
ECMAScript 5(ES5) | 5 | 2009 年 12 月 |
ECMAScript 4(ES4) | 4 | 被放弃 |
ECMAScript 3(ES3) | 3 | 1999 年 12 月 |
ECMAScript 2(ES2) | 2 | 1998 年 6 月 |
ECMAScript 1(ES1) | 1 | 1997 年 6 月 |
在 ECMAScript 版本迭代更新过程中,其中 ES2015 需要单独去了解的内容有很多,因为在这个版本中相对比较特殊,相较于上一个版本 ES5 发布之后经历了近 6 年的时间才被完全地标准化,而且这 6 年时间也是 Web 发展的黄金时间。所以说,在这一个版本当中包含很多颠覆式的新功能。
也就是因为 ES2015 迭代的时间太长导致发布的内容过多,所以从之后的版本开始 ES 的发布会变得更加频繁,也更符合当下互联网小步快跑的精神。而且从 ES2015 过后 ECMAScript 就决定不再按照版本号去命名,而是使用发行年份命名。由于这个决定是在 ES2015 发布的过程中决定的,所以当时很多人就习惯了把 ES2015 称为 ES6。
随着 ECMAScript 开始稳固迭代发展,市面上主流的运行环境也都纷纷跟进,已经开始逐步支持这些最新的特性。所以说,对于我们这些使用 JavaScript 的开发者而言,学习这些新特性就尤为重要。
现在有很多开发者习惯使用 ES6 泛指 ECMAScript 的所有新特性。比如有些资料里面会这样写“使用 ES6 的async
和await
”,而实际上async
和await
函数是 ES2017 中制定的标准。
ES2015 的变化可以归纳为 4 类:
- 解决原有语法上的一些问题或者不足,比如
let
和const
提供的块级作用域 - 对原有语法进行增强,使之变得更加便捷、易用,比如解构、展开、参数默认值和模板字符串等等
- 全新的对象、全新的方法、全新的功能,比如
Promise
和Proxy
,以及Object
的assign()
方法之类的 - 全新的数据类型和数据结构,比如
Symbol
、Set
和Map
等等
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。