Detect version of JavaScript

在前端开发中,了解当前浏览器中 JavaScript 的版本是非常有用的。不同浏览器版本支持的 JavaScript 版本也不尽相同,因此我们需要一个方法来检查当前环境中可用的 JavaScript 版本。

常见 JavaScript 版本

在介绍如何检测 JavaScript 版本之前,让我们先来了解一下常见的 JavaScript 版本:

  • ECMAScript 5 (ES5)
  • ECMAScript 6 (ES6) 或 ES2015
  • ECMAScript 2016(ES7)
  • ECMAScript 2017(ES8)
  • ECMAScript 2018(ES9)
  • ECMAScript 2019(ES10)
  • ECMAScript 2020(ES11)
  • ECMAScript 2021(ES12)

检测 JavaScript 版本的方法

使用 navigator.userAgent

我们可以使用 navigator.userAgent 属性来检测当前浏览器中是否支持某个 JavaScript 版本。例如,以下代码示例演示了如何检测 ES6 版本:

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

上述代码中,我们通过检查 navigator.userAgent 中是否包含某些字符串来确定当前浏览器是否支持 ES6。如果包含了这些字符串,则说明当前浏览器支持 ES6。

使用 JavaScript 特性检测

另一种检测技术是使用 JavaScript 的特性检测。我们可以使用以下代码来进行检测:

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

上述代码中,我们检查当前环境是否支持 Array.from 这个方法。如果支持,则说明当前浏览器支持 ES6。

检测 JavaScript 引擎版本的方法

除了检测 JavaScript 版本之外,我们还可以检测当前浏览器所使用的 JavaScript 引擎版本。以下是一些常用的检测方法:

使用 console.log 输出引擎版本信息

我们可以通过在控制台上输出引擎版本信息来确定当前浏览器所使用的 JavaScript 引擎版本。例如,在 Chrome 浏览器中,我们可以打开开发者工具,然后执行以下代码:

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

在输出结果中,我们可以找到类似于以下的信息:

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

其中,V8 就是当前 Chrome 浏览器所使用的 JavaScript 引擎版本。

使用 globalThis['%Realm%'] 属性

在 ECMAScript 2020 中,新引入了一个 %Realm% 属性,可以用来检测当前 JavaScript 引擎的版本。以下是一个使用 %Realm% 属性来检测 V8 引擎版本的示例:

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

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