JavaScript
About 2 min
JavaScript
简称JS
,文件以.js
为后缀。
ECMAScript
ECMAScript
(简称ES
)是JavaScript
的标准化版本,由ECMA
国际(前身为欧洲计算机制造商协会)的TC39
技术委员会负责制定。以下是ECMAScript
的主要版本迭代历程:
ECMAScript 1(1997年)
- 初始版本,确立了JavaScript作为一门编程语言的基础。
ECMAScript 2(1998年)
- 一个小更新,增加了一些新特性和错误修复。
ECMAScript 3(1999年)
- 引入了正则表达式、
try...catch
异常处理等重要特性。
- 引入了正则表达式、
ECMAScript 4(未能发布)
- 计划引入面向对象编程、模块化等特性,但由于争议过大,该版本最终被废弃。
ECMAScript 5(2009年)
- 重新聚焦于小的、一致的更新,引入了严格模式、JSON等。
ECMAScript 5.1(2011年)
- 一个小更新,主要是一些bug修复和一些新的API。
ECMAScript 6(ES2015,2015年)
- 引入了类、模块、箭头函数、模板字符串、解构赋值、
let
和const
、Promise
、Map
和Set
等大量新特性。
类演示
模块演示
箭头函数示例
其余新特性示例
- 引入了类、模块、箭头函数、模板字符串、解构赋值、
ECMAScript 2016(ES2016)
- 引入了
Array.prototype.includes
方法和指数运算符(**
)。
- 引入了
ECMAScript 2017(ES2017)
- 引入了
async
/await
、Object.values
和Object.entries
等。
- 引入了
ECMAScript 2018(ES2018)
- 引入了
Promise.prototype.finally
、Object.getOwnPropertyDescriptors
等。
- 引入了
ECMAScript 2019(ES2019)
- 引入了
Array.prototype.flat
和Array.prototype.flatMap
、String.prototype.trimStart
和String.prototype.trimEnd
等。
- 引入了
ECMAScript 2020(ES2020)
- 引入了空值合并运算符(
??
)、globalThis
、Promise.allSettled
等。
- 引入了空值合并运算符(
ECMAScript 2021(ES2021)
- 引入了逻辑赋值运算符(
||=
和&&=
)、Promise.any
等。
- 引入了逻辑赋值运算符(
ECMAScript 2022(ES2022)
- 引入了
Array.prototype.at
、String.prototype.replaceAll
、Object.hasOwn
、FinalizationRegistry
等。
- 引入了
ECMAScript 2023(ES2023)
- 引入了
Array.prototype.findLast
、Array.prototype.findLastIndex
、String.prototype.codePoints
等。
- 引入了
ECMAScript 2024(ES2024)(预计)
- 正在讨论中,预计会引入新的语法和API。
ECMAScript规范每年都会更新,引入新特性以保持JavaScript的现代化和竞争力。开发者需要关注这些更新,以便利用新特性提高开发效率和代码质量。
声明数据
var
var
是ES6之前JavaScript中唯一的变量声明关键字。- 它有函数作用域,而不是块作用域(例如
if
语句或for
循环)。 - 可以被重新赋值(可变)。
var message = 'Hello';
message = 'Hello Vue'; // 可以重新赋值
let
let
是ES6中引入的,它有块作用域。- 可以被重新赋值(可变)。
let message = 'Hello';
message = 'Hello Vue'; // 可以重新赋值
const
const
也是ES6中引入的,它有块作用域。- 一旦声明,其值不能被重新赋值(不可变),但若其值为对象或数组,则对象或数组内部的属性可以改变。
const message = 'Hello';
// message = 'Hello Vue'; // 错误:Assignment to constant variable.