ES6、ECMAScript、Javascript简介
ECMA是什么
ES6(ECMAScript 6),也被称为ES2015,是JavaScript的第六个版本。它于2015年发布,并从2015年开始,版本命名使用了年号,但是ES6版本具有很强的代表,并在现代JavaScript开发中扮演了重要的角色,也是最常被提及的。
ECMAScript是ECMA发布的JavaScript语言规范,Ecma国际(Ecma International) 1是一家国际性会员制度的信息和电信标准组织。1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。Ecma国际负责的标准包括:
- List item
- CD-ROM格式(之后被国际标准化组织批准为ISO 9660)
- C#语言规范
- C++/CLI语言规范 通用语言基础结构(CLI)
- ECMAScript语言规范(JavaScript为基础)
- Eiffel语言
- 电子产品环境化设计要素
- Universal 3D标准
- OOXML
ECMAScript 与 JavaScript 的关系
- ECMAScript 简称 ES。ES 是一个脚本语言。注意,是 ES 也是脚本语言。
- ES 通常可以看作是 JavaScript 的标准化规范。
- ES 只提供了最基本的语法。如:怎样定义变量和函数。
- JS 实现了 ES 的语言标准。JS 还在此基础上新增了一些拓展,使得我们可以在浏览器可以操作 DOM/BOM,在 Node 环境中可以读写文件等操作。
- 因为 JS 是在 ES 基础上的拓展,所有 JS 是 ES 的扩展语言。
- JS 在浏览器环境中的组成关系:ES + Web Apis (BOM + DOM 等)。
- JS 在 Node 环境中的组成关系:ES + Node Apis(fs + net 等)。
ECMAScript版本变化
后续针对版本新特性单独做一篇梳理和实践2
名称 | 版本 | 发行时间 | 新特性 |
---|---|---|---|
ECMAScript 2019(ES2023) | 14 | 2023 | 从头到尾搜索数组:findLast() 、findLastIndex();Hashbang 语法;通过副本更改数组:toReversed()、toSorted()、toSpliced()、with();Symbol 作为 WeakMap 的键 |
ECMAScript 2019(ES2022) | ES13 | 2022年 | 模块顶层作用域支持 await 表达式;新增私有类元素、静态块;in 操作符支持私有类元素;正则新增 d 标志和其对应的 hasIndices 属性,提供了获取捕获组开始索引和结束索引的方法;Error 实例增加 cause 属性,可携带更多错误信息;Strings、Arrays、TypedArrays 新增 at 方法,支持关联访问;Object.hasOwn 代替 Object.prototype.hasOwnProperty,判断对象是否含有属性。 |
ECMAScript 2019(ES2021) | ES12 | 2021 | 引入了一些新的语言特性,如逻辑赋值运算符和String.prototype.replaceAll()方法;改进了数字类型的操作和Promise对象的处理。 |
ECMAScript 2019(ES2020) | ES11 | 2020 | 新的语言特性,如可选链操作符和动态导入;改进了字符串操作和Promise对象的处理 |
ECMAScript 2019(ES2019) | ES10 | 2019年6月 | Array.prototype.flat()方法和String.prototype.trimStart()方法;改进了try-catch语句和Array.prototype.sort()方法的稳定性 |
ECMAScript 2018(ES2018) | ES9 | 2018年6月 | 异步迭代器和正则表达式命名捕获组;改进了Promise.prototype.finally()方法和正则表达式的性能 |
ECMAScript 2017(ES2017) | ES8 | 2017年6月 | 对象属性的定义顺序和String.prototype.padStart()方法;改进了异步函数和共享内存并发模型 |
ECMAScript 2016(ES2016) | ES7 | 2016年6月 | 指数运算符和Array.prototype.includes()方法;改进了Array.prototype.includes()方法,使其更易于使用 |
ECMAScript 2015(ES2015) | ES6 | 2015年6月 | 是一个重大的版本更新。它引入了许多新的语言特性,如箭头函数、类、模块化、解构赋值和迭代器;改进了字符串操作、Promise对象和生成器函数 |
ECMAScript 5.1(ES5.1) | 5.1 | 2011年6月 | |
ECMAScript 5(ES5) | 5 | 2009年12月 | 严格模式、数组迭代方法和函数绑定;改进了对象属性的定义和访问方式,以及JSON的支持 |
ECMAScript 4(ES4) | 4 | ||
ECMAScript 3(ES3) | 3 | ||
ECMAScript 2(ES2) | 2 | ||
ECMAScript 1(ES1) | 1 |
- ES 的版本更迭从 ES5 跨向 ES6 这个阶段发生了巨变,中间间隔了 6 年之久(不谈 5.1
- 6 年里,刚好是 Web 界快速发展的几年,ES6 一经发布,带来的更新内容特别多,因此算作一个新阶段的起始点。
- ES6 发布时的版本应该是 ECMAScript 6,但从 2015 这年开始 ES 的版本不再使用版本号命名了,而是使用年号,因此 ES6 又叫 ESCMAScript 2015。
- 从 2015 年开始,ES 的更新频率加速,达到每年一更,且规律是每年的 6 月时更新。