javascript基础教程
2022年5月24日大约 4 分钟约 1124 字
ECMAScript和JavaScript区别
简单的理解是这样的:
ECMAScript是标准和规范,就像某个行业规范一样。
Javascript,JScript,ActionScript等脚本语言都是基于ECMAScript标准实现的。
所以说,在JavaScript,JScript和ActionScript中声明变量,操作数组等语法完全一样,因为它们都是基于ECMAScript标准。但是在操作浏览器对象等方面又有各自独特的方法,这些都是各自语言的扩展。
JavaScript组成:
- ECMAScript标准
- DOM
- BOM
ECMAScript标准的版本历史
- 1998年6月,ECMAScript 2.0版发布。
- 1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准。
- 2007年10月,ECMAScript 4.0版草案发布,对3.0版做了大幅升级。
- 2008年7月,由于新功能的意见分歧太大,中止和废弃了ECMAScript 4.0的开发,发布为ECMAScript 3.1。后不久,ECMAScript 3.1就改名为ECMAScript 5。
- 2009年12月,ECMAScript 5.0版正式发布。未来的新功能设想定为ES.next继续开发,后来演变成ES6。
- 2011年6月,ECMAscript 5.1版发布,并且成为ISO国际标准(ISO/IEC 16262:2011)。
- 我们常把5.1和之前的版本,统称做ES5。
- 2015年6月,ECMAScript 6发布正式版本,即ECMAScript 2015。未来新版本将加入ECMAScript+年份的形式发布。
- ES6的重大改进:添加了模块、类、Promises、模板字符串、生成器Generators、Maps、Sets等。
- 添加了
let,const,Array.find(),Array.findexIndex() - ES6特殊在一下补充了几十年的债,内容比较多。
- ES6完全向后兼容以前的版本,整个过度很平滑。
- 多年的功能纠纷终于在ES6上步入正轨,而且ES版本是在太多,我们常将ES6之后的版本统称为ES6。
- 2016年6月,ECMAScript 2016、ES2016 版本发布。
- 添加了数组的includes方法,求幂操作符
**代替Math.pow
- 添加了数组的includes方法,求幂操作符
- 2017年6月,ECMAScript 2017、ES2017 版本发布。
Object.values()新方法、Object.entries()新方法、字符串的padStart()和padEnd()新方法Object.getOwnPropertyDescriptors()新方法- 允许函数的最后一个参数有尾逗号
- **(重要)**添加
Async/Await语法解决回调地狱问题,并使代码看起来更简单。 - (重要) 共享内存和
Atomics全局对象锁:允许开发者自己管理内存来编写高性能的并发程序。
- 2018年6月,ECMAScript 2018、ES2018 版本发布。
- 包含了异步循环、生成器、新的正则表达式特性和rest/spread语法。
- 用于正则表达式的“dotall”标志、正则的命名组抓取
- 对象的 Rest操作,
...(三个点)允许挑拣需要的属性 - 对象的扩展操作,
...(三个点)用来扩展对象 - 正则表达式反向(lookbehind)断言
- 正则表达式Unicode属性转义符
Promise.finally()新方法- **(重要)**异步迭代
- 2019年6月,ECMAScript 2019、ES2019 版本发布。
- Optional catch binding
- JSON superset
Symbol.description()- Function.prototype.toString revision
- Object.fromEntries
- Well-formed JSON.stringify
- String.prototype.{trimStart,trimEnd}
- Array.prototype.{flat,flatMap}
- 2020年6月,ECMAScript 2020、ES2020 版本发布。
- String.prototype.matchAll
- BigInt
- Promise.allSettled
- globalThis
- for-in mechanics
- Optional Chaining
- Nullish coalescing Operator
- import.meta
- 2021年6月,ECMAScript 2021、ES2021 版本发布。
- String.prototype.replaceAll
- Promise.any
- WeakRefs
- Logical Assignment Operators
- Numeric separators
- 2022年6月,ECMAScript 2022、ES2022 版本发布。
需要注意的是,自从 TC39 进程 制定以来,ECMAScript 版本的重要性就降低了很多。
大家不必记住某一个 ES 特性到底是哪年推出的。现在真正重要的是提案处于哪个阶段:一旦提案到了第 4 阶段,那么它就可以使用了。但是即使这样,你仍然需要检查你的引擎是否支持该功能。
ECMAScript 版本每年发布一次,TC39进程就是TC39组织发布ES新版本的流程,发布的内容必须要走完5个stage阶段才能做为标准发布。
stage阶段如下:
- Stage 0:代号“稻草人(strawman)”,草案阶段
- Stage 1:代号“提案(proposal)”, TC39 帮助阶段
- Stage 2:代号“草案(draft)”, 本阶段很有可能成为标准
- Stage 3:代号“候选(candidate)”, 已完成,需要从实现中获得反馈
- Stage 4:代号“结束(finished)”, 准备成为标准
是否有官方的ECMAScript功能列表吗?当然有!GitHub tc39/ecma262
本教程会结合最新的语法进行讲解和说明。