我想看看我在浏览器中使用的 ECMAscript 版本(例如 chrome 59),因为在处理 RegExp 内容时 ECMAscript3 和 ECMAscript5 之间存在一些差异。
我已经找到了这方面的相关信息,但是我找不到关于如何检测 ECMAscript 版本的具体答案。
先谢谢了。
也许您可以尝试使用一些专门添加到 ES6
中的数据结构,例如 Map
、Set
等。这是为了区分 ES5
和 ES6
,但是您可以查找在 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 是一种已注册商标的脚本语言规范 由 Ecma International 在 ECMA-262 和 ISO/IEC 16262 中标准化。它 是为了标准化 JavaScript 而创建的,以促进多种 独立实施。
Javascript 是一种流行的实现,或多或少:
JavaScript 一直是最知名的 自标准首次发布以来 ECMAScript 的实施, 与其他著名的实现包括 JScript 和 动作脚本。 维基百科
考虑到各种浏览器、node.js 等中 JavaScript 实现的当前状态,没有人专门对自己进行版本控制,而是不断发展新功能。因此,最好的方法是检测(可能使用第 3 方库)是否存在所需的功能然后使用。否则退回到更传统的。通常是尝试一些操作,然后检查是否符合预期,没有魔法。
这是一个扩展的 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 = 1999
if (ecmascript !== 3) {
year = ecmascript + 2009
}
console.log("Version " + ecmascript + ", Year " + year)
ECMAScript 在每个版本上支持不同的对象。要检测 ECMAScript 版本,我们可以检查对象是否退出浏览器。如果识别出该对象,则表示浏览器支持 ECMA 版本。
检查以下链接有一个很好的例子来检测 ECMAScript 版本。
https://www.devdiscuss.com/how-to-detect-the-ecmascript-version/