前端开发的第三年,突然发现,对于JS,我还有很多不懂的地方,趁着最近需求少,不如静下心来,从头把JS再学一遍,查漏补缺。 本系列以廖雪峰的《JavaScript教程》和《现代 JavaScript 教程》两个电子书作为线索,对其中需要进一步了解的知识,会阅读更多的文章,并作为扩展知识记录下来。 新手建议先阅读上面两个电子书,本系列更适合用来复习旧知识和查漏补缺。
ECMAScript和JavaScript是什么关系?
ECMAScript是一种语言标准,而JavaScript是Mozilla或其他组织对ECMAScript标准的一种实现。
TC39
(Technical Committee 39),ESMA的第39号技术专家委员会,负责制订ECMAScript标准,成员包括Microsoft、Mozilla、Google等大公司。
ECMAScript 1
1997年发布第一个ECMAScript标准。
ECMAScript 5
2009年发布,修复了旧版本一些不完善的特性,增加"strict mode,"(严格模式)。
ECMAScript 2015(ES6)
JavaScript新语法、新纪元的代名词。
从这一版本开始,TC39委员会决定每年发布一个ECMAScript 的版本。
ES6的具体特性参考廖雪峰ES6入门教程。
从ES2015开始,各个版本的特性
名称 | 特性 |
---|---|
ECMAScript2015 | let & const、 解构赋值、箭头函数、 Array新特性、 Function新特性、 Object新特性、 String新特性、 Number新特性、 Math新特性、 Class、新增数据类型( Symbol、 Set、 Map)、 Proxy 、Reflect、 Promise、 Generator、 Iterator、 Module模块化 |
ECMAScript2016 | Array.prototype.includes、**幂运算符 |
ECMAScript2017 | async/await、 String.prototype.padStart、String.prototype.padEnd、 Object.values、 Object.entries、Object.getOwnPropertyDescriptors、尾后逗号 |
ECMAScript2018 | for await...of、Symble.asyncIterator、 Promise.prototype.finally、 正则新增:具名组匹配、后行断言、dotAll、unicode转义、对象支持rest&spread操作符 |
ECMAScript2019 | String.prototype.trimStart、String.prototype.trimEnd、 Array.prototype.flat、Array.prototype.flatMap、 Object.fromEntries、 可选的Catch Binding、 Symble.prototype.description 、 JSON superset & stringify()增强 |
ECMAScript2020 | String.prototype.matchAll、 Dynamic import、 BigInt、 Promis.allSellted、 globalThis、可选链(Optional chaining)、 空值合并(Nullish coalescing ) |
ECMAScript2021 | String.prototype.replaceAll、逻辑赋值运算符(Logical Assignment Operator)、 数字分隔符(Numeric Separators)、Promise.any、 WeakRef |
参考文章
维基百科-ECMAScript
ES6、ES7 ~ ES2021 都更新了啥?
廖雪峰ES6入门教程