11

ECMAScript与ECMAScript2015 – 前端课湛

 3 years ago
source link: https://qianduankezhan.com/frontend/ecmascript-and-ecmascript2015.html?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

ECMAScript 与 JavaScript

ECMAScript 也是一种脚本语言,通常缩写为 ES,通常会把它看作是 JavaScript 语言的标准化规范。实际上 JavaScript 是 ECMAScript 的扩展语言,因为在 ECMAScript 只是提供了最基本的语法。通俗点来说,就是约定了我们的代码要如何编写,比如我们要怎么定义变量和函数,要怎么定义分支和循环的语句。ECMAScript 只是停留在语言层面,并不能用来在完成实际功能开发。

而我们经常使用的 JavaScript 实现了 ECMAScript 语言的标准,并且在这个基础之上实现了一些扩展,使得我们可以在浏览器环境里面操作 DOM 和 BOM,可以在 Node 环境里面操作读写文件的操作。

总的来说呢,在浏览器环境的 JavaScript 包含了 ECMAScript 和 Web APIs:

ECMAScript与ECMAScript2015-前端课湛

在 Node 环境中所使用的 JavaScript 包含 ECMAScript 和 Node APIs:

ECMAScript与ECMAScript2015-前端课湛

所以说,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 的 asyncawait”,而实际上 asyncawait 函数是 ES2017 中制定的标准。

ES2015 的变化可以归纳为 4 类:

  • 解决原有语法上的一些问题或者不足,比如 letconst 提供的块级作用域
  • 对原有语法进行增强,使之变得更加便捷、易用,比如解构、展开、参数默认值和模板字符串等等
  • 全新的对象、全新的方法、全新的功能,比如 PromiseProxy,以及 Objectassign() 方法之类的
  • 全新的数据类型和数据结构,比如 SymbolSetMap 等等

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK