Chrome 如何检测ECMAscript版本?

5kgi1eie  于 2023-02-06  发布在  Go
关注(0)|答案(5)|浏览(325)

我想看看我在浏览器中使用的是什么ECMAscript版本(例如chrome 59),因为在处理一些RegExp的东西时,ECMAscript3和ECMAscript5之间有一些区别。
我已经找到了相关的信息,但是我找不到关于如何检测ECMAscript版本的具体答案。
先谢谢你。

gg58donl

gg58donl1#

您可以尝试使用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 :(")
}
f1tvaqid

f1tvaqid2#

我认为这是不可能的,因为浏览器通常不会一次实现ECMAScript版本的所有功能,这就是为什么我们有Modernizr这样的库和Can I use ...这样的网站来了解哪些功能可以使用。
您仍然可以构建一个小测试来确定RegEx在用户浏览器版本中的行为。

d4so4syb

d4so4syb3#

ECMAScript是一个行业标准:
ECMAScript是Ecma International在ECMA-262和ISO/IEC 16262中标准化的脚本语言规范。创建ECMAScript是为了标准化JavaScript,以便促进多个独立的实现。
Javascript是一种流行的实现,或多或少:
自ECMAScript标准首次发布以来,JavaScript一直是ECMAScript最著名的实现,其他著名的实现包括JScript和ActionScript。wikipedia
考虑到JavaScript在各种浏览器、node.js等中的实现现状,没有人会专门对自己进行版本控制,而是不断地开发新功能。所以最好的方法是检测(可能是使用第三方库)所需的功能是否存在,然后使用。否则就回到更传统的方法。通常是尝试一些操作,然后检查是否如预期的那样,没有魔法。

lb3vh1jj

lb3vh1jj4#

ECMAScript在每个版本上支持不同的对象。要检测ECMAScript版本,我们可以检查对象是否退出到浏览器中。如果标识了该对象,则表示浏览器支持ECMA版本。
检查以下链接是否有检测ECMAScript版本的良好示例。
https://www.devdiscuss.com/how-to-detect-the-ecmascript-version/

o2gm4chl

o2gm4chl5#

下面是一个扩展的EcmaScript检测器:

function getES() {
  var array = []
  if (!Array.isArray) {
    return 3
  } else if (!window.Promise) {
    return 5
  } else if (!array.includes) {
    return 6
  } else if (!"".padStart) {
    return 7
  } else if (!Promise.prototype.finally) {
    return 8
  } else if (!window.BigInt) {
    return 9
  } else if (!Promise.allSettled) {
    return 10
  } else if (!"".replaceAll) {
    return 11
  } else if (!array.at) {
    return 12
  } else {
    return 13
  }
}

var ecmascript = getES()
var year = getES() === 3 ? 1999 : ecmascript + 2009
console.log("Version " + ecmascript + ", Year " + year)

相关问题