如何检测 ECMAscript 版本?

How to detect ECMAscript version?

我想看看我在浏览器中使用的 ECMAscript 版本(例如,chrome 59),因为在处理 RegExp 内容时 ECMAscript3 和 ECMAscript5 之间存在一些差异。
我找到了这方面的相关资料,但是我找不到关于如何检测ECMAscript版本的具体答案。
先谢谢了。

我认为这是不可能的,因为浏览器通常不会同时实现 ECMAScript 版本的所有功能。这就是为什么我们有像 Modernizr and websites like Can I use ... 这样的库来找出可以使用哪些功能。

您仍然可以构建一个小测试来确定 RegEx 在用户浏览器版本中的行为方式。

也许你可以尝试使用一些在 ES6 中专门添加的数据结构,如 MapSet 等。这是为了区分 ES5ES6 但您可以查找 ES5 中添加的功能,而在您的情况下 ES3 中不存在这些功能?

try {
  var k = new Map();
  console.log("ES6 supported!!")
} catch(err) {
  console.log("ES6 not supported :(")
}

try {
  var k = new HashMap();
  console.log("ES100 supported!!")
} catch(err) {
  console.log("ES100 not supported :(")
}

ECMAScript 是行业标准:

ECMAScript is a trademarked scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations.

Javascript是比较流行的实现方式,大致是:

JavaScript has remained the best-known implementation of ECMAScript since the standard was first published, with other well-known implementations including JScript and ActionScript. wikipedia

考虑到 JavaScript 各种浏览器、node.js 等实现的当前状态,没有人专门对自己进行版本控制,而是不断发展新功能。因此,最好的方法是检测(可能使用第 3 方库)是否存在所需的功能然后使用。否则退回到更传统的。一般都是先尝试一些操作,然后检查是否符合预期,没有魔法。

ECMAScript 在每个版本上支持不同的对象。要检测 ECMAScript 版本,我们可以检查对象是否退出浏览器。如果识别出该对象,则表示浏览器支持 ECMA 版本。

检查以下link 有一个很好的例子来检测 ECMAScript 版本。

https://www.devdiscuss.com/how-to-detect-the-ecmascript-version/