ES 是 ECMAScript 的缩写,指的是由 ECMA 国际(ECMA International)标准化的脚本编程语言规范。ECMAScript 是 JavaScript 的标准规范,最初由 Netscape 和 Sun Microsystems(现属于 Oracle)在 1997 年提交给 ECMA,以标准化 JavaScript 的发展方向。
增加了严格模式(strict mode)、JSON 支持、Array 的高级方法(如 map、forEach)等功能。
一个里程碑式的版本:
let
和const
关键字,用于声明块级作用域的变量。在 ES6 之后,ECMA 国际决定采用年份来命名版本(如 ES2016、ES2017),每年发布一次更新,确保 JavaScript 语言在开发需求中不断演进。
ES7(即 ECMAScript 2016)是一个相对较小的更新版本,但它引入了两个实用的新特性
Array.prototype.includes()
方法,用于检查数组是否包含特定元素。**
,用于取幂操作,功能与Math.pow()
相同,但语法更简洁。ES8(即 ECMAScript 2017)引入了一些实用的新特性,增强了 JavaScript 的功能。
async
和await
Object.entries()
和Object.values()
String.prototype.padStart()
和String.prototype.padEnd()
这两个方法用于在字符串的开始或结束添加填充字符,直到达到指定的长度。Object.getOwnPropertyDescriptors()
:此方法返回一个对象自身所有属性的描述符对象,这些属性包括可枚举和不可枚举的。Promise.prototype.finally()
:为 Promise 提供了一种处理无论 Promise 成功还是失败后都要执行的回调函数的方式。Array.prototype.flat()
和 Array.prototype.flatMap()
方法,用于处理嵌套数组。
Object.fromEntries()
:将一个键值对数组转换为对象,类似于 Object.entries() 的反向操作。引入了String.prototype.trimStart()
和String.prototype.trimEnd()
:新增了去除字符串开头和结尾空格的方法,分别为 trimStart() 和 trimEnd()。
Optional Catch Binding:在 try...catch 语句中,可以省略 catch 子句中的绑定变量,适用于只需要执行 catch 语句而不需要处理错误时的场景。
?.
(optional chaining Operator):允许安全地访问深层次属性,避免因访问不存在的属性而抛出错误。??
(Nullish Coalescing Operator):提供了一个新的逻辑运算符,用于在操作数为 null 或 undefined 时返回右侧操作数。引入了BigInt
类型,新增了一种新的数据类型,用于表示任意大小的整数和处理超出Number
类型范围的整数,
引入了动态导入Dynamic Import
:支持动态导入模块,允许在运行时加载模块。
Promise.allSettled()
返回一个 Promise,当所有给定的 Promise 都已完成(不论是成功还是失败)时,会返回一个包含每个 Promise 的结果的数组。