从 ES5 到 ES12,JavaScript 语言本身的演进一览!

阅读时长 12 分钟读完

JavaScript 是一门动态语言,自问世以来一直在不断发展。自 ES5 发布以来,JavaScript 语言每年都会发布新的版本,增加一些新的功能来弥补它之前版本所没有的不足。本文将会介绍从 ES5 到 ES12,JavaScript 语言的演进历程,以及每个版本新增的功能,并给出相应的代码示例。

ES5

ES5(ECMAScript 5)是 JavaScript 发展历史上重要的里程碑。ES5 引入了一些新的语法特性,让 JavaScript 更加灵活、可维护和适应大规模开发。以下是 ES5 新增的主要特性:

严格模式

ES5 引入了严格模式,用于限制 JavaScript 代码的松散行为,强制执行更严格的语法和错误检查。使用严格模式,可以避免一些常见的错误,并提高代码的性能和安全性。要使用严格模式,可以在 JavaScript 文件或函数的头部添加 'use strict';

新的数组方法

ES5 引入了一些新的数组方法,比如 Array.prototype.forEach()Array.prototype.map()Array.prototype.filter() 等等,这些方法使得数组处理变得更加方便和简单。

-- -------------------- ---- -------
--- ------- - --- -- -- -- ---

-- ------- ----
-------------------------------- -
  --------------------
---

-- --- -----
--- ---------- - ---------------------------- -
  ------ ------ - --
---

-- ------ ----
--- --------------- - ------------------------------- -
  ------ ------ - --
---

JSON 支持

ES5 引入了对 JSON(JavaScript Object Notation)的支持,可以用内置函数 JSON.parse()JSON.stringify() 把 JSON 数据转换成 JavaScript 对象或者字符串。

-- -------------------- ---- -------
--- ------ - -
  ----- ------
  ---- --
--

-- - ---------------- ---------
--- ------------- - ----------------------- -- -------------------------

-- - ------------ ---------
--- ----------- - --------------------------

ES6

ES6(ECMAScript 6)发布于 2015 年,也被称为 ES2015,是 JavaScript 发展历程中一次重大的升级。ES6 引入了很多新的语言特性和 API,使得 JavaScript 在功能和性能上都有了很大的提升。以下是 ES6 新增的一些主要特性:

let 和 const

ES6 引入了 let 和 const 关键字,分别用于声明变量和常量,用法和 var 关键字比较相似,但是具有更细粒度的作用域控制和更好的性能。

Arrow Function

ES6 允许使用箭头函数,使得函数定义变得更加简单明了。

模板字符串

ES6 引入了模板字符串,使得字符串的拼接变得更加方便和灵活。

解构赋值

ES6 允许使用解构赋值,使得数组和对象的操作变得更加方便和灵活。

ES7

ES7(ECMAScript 2016)发布于 2016 年,是 JavaScript 发展历程中一个小的更新。ES7 主要引入了一些新的语言特性,用于改善 JavaScript 的使用体验。

Array#includes

ES7 引入了 Array#includes 方法,用于检查数组中是否包含特定的元素。

函数的 rest 参数

ES7 允许使用 ... 运算符,用于声明函数的 rest 参数,用于将多余的函数参数收集到一个数组中。

-- -------------------- ---- -------
-------- --------------- -
  --- ------ - --
  --- ---- ------ -- -------- -
    ------ -- -------
  -
  ------ -------
-

------ -- -- --- -- --

ES8

ES8(ECMAScript 2017)发布于 2017 年,主要引入了一些新的语言特性,用于改善 JavaScript 的使用体验。

对象属性名称表达式

ES8 允许使用对象属性名称表达式,用于更加方便灵活地定义对象属性。

String#padStart 和 String#padEnd

ES8 引入了 String#padStart 和 String#padEnd 方法,用于填充字符串。

异步函数

ES8 允许使用 async/await 关键字,用于更加方便地编写异步的代码。

ES9

ES9(ECMAScript 2018)发布于 2018 年,主要引入了一些新的语言特性,用于改善 JavaScript 的使用体验。

Object Rest/Spread Properties

ES9 允许使用对象 Rest/Spread Properties,用于更加方便地操作对象。

Promise.prototype.finally

ES9 引入了 Promise.prototype.finally 方法,用于在 Promise 执行结束后执行一些清理操作。

-- -------------------- ---- -------
--- ------- - --- ----------------- ------- -- -
  --- ------ - ------------- - --- - --------- - -------
  ------------- -- -
    -- ------- --- ---------- -
      ----------
    - ---- -
      ---------
    -
  -- ------
---

--------------- -- ---------------- ------- -- ------------
       --------- -- ---------------- ------- -- ------------
       ----------- -- ---------------- ------- -- -------------

ES10

ES10(ECMAScript 2019)发布于 2019 年,主要引入了一些新的语言特性,用于改善 JavaScript 的使用体验。

Array#flat 和 Array#flatMap

ES10 引入了 Array#flat 和 Array#flatMap 方法,用于更加方便地处理嵌套数组。

String#trimStart 和 String#trimEnd

ES10 引入了 String#trimStart 和 String#trimEnd 方法,用于更加方便地去除字符串的头尾空格。

ES11

ES11(ECMAScript 2020)发布于 2020 年,主要引入了一些新的语言特性,用于改善 JavaScript 的使用体验。

Nullish 合并运算符

ES11 引入了 Nullish 合并运算符 ??,用于更加方便地处理空值。

-- -------------------- ---- -------
--- ---- - -
  ----- ------
  ---- ---
  ------ ---
  -------- ----
--

--- -------- - --------- -- ------------ -- -----
--- ------- - -------- -- --- -- --
--- --------- - ---------- -- --- ------- -- --
--- ----------- - ------------ -- --- --------- -- --- --------

可选链操作符

ES11 引入了可选链操作符 ?.,用于更加方便地处理对象和数组的属性和方法。

-- -------------------- ---- -------
--- -------- - -
  ----- ------
  -------- -
    ------- ----- -----
    -------- -------
  -
--

--- ---------- - ------------------------- -- ----- ----
--- ----------- - -------------------------- -- -------
--- --------- - ------------------------ -- ---------

ES12

ES12(ECMAScript 2021)是即将发布的 JavaScript 最新版本,主要引入了以下新的语言特性。

Promise.any

ES12 引入了 Promise.any 方法,用于对多个 Promise 实例进行竞争,返回最先是 fulfilled 状态的 Promise 实例的结果。

数字分隔符

ES12 允许在数字中使用数字分隔符 _,用于更加方便地表示大的数字。

String#replaceAll

ES12 引入了 String#replaceAll 方法,用于替换字符串中所有的匹配项。

总结

JavaScript 是一门不断发展的语言,从 ES5 到 ES12,每个版本都引入了新的特性和语言支持,不断提升了它的性能和可用性。本文介绍了每个版本的主要特性,并提供了相应的代码示例,希望可以帮助你更好地了解和掌握 JavaScript。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d235a3b5eee0b525996c59

纠错
反馈