Как определить версию ECMAscript?
Я хочу увидеть, какую версию ECMAscript я использую в своем браузере (например,chrome 59), потому что есть некоторая разница между ECMAscript3 и ECMAscript5, когда имеешь дело с чем-то из RegExp.
Я нашел соответствующую информацию об этом, но я не могу найти конкретный ответ о том, как определить версию ECMAscript.
Заранее спасибо.
6 ответов
Может быть, вы можете попробовать использовать некоторые структуры данных, которые специально добавлены в 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 одновременно. Вот почему у нас есть библиотеки, такие как Modernizr, и веб-сайты, такие как " Могу ли я использовать...", чтобы узнать, какие функции можно использовать.
Вы все еще можете создать небольшой тест, который определяет поведение RegEx в версии браузера пользователя.
ECMAScript является отраслевым стандартом:
ECMAScript - это спецификация языка сценариев под торговой маркой, стандартизированная Ecma International в ECMA-262 и ISO/IEC 16262. Она была создана для стандартизации JavaScript, чтобы способствовать множеству независимых реализаций.
Javascript - это популярная реализация, более или менее:
JavaScript остался самой известной реализацией ECMAScript с тех пор, как стандарт был впервые опубликован, с другими известными реализациями, включая JScript и ActionScript. википедия
Учитывая текущее состояние реализаций JavaScript в различных браузерах, node.js и т. Д., Никто специально не управляет версиями, а продолжает развиваться с новыми функциями. Поэтому лучший способ - определить, возможно, с помощью сторонних библиотек, существует ли нужная функция, а затем использовать. В противном случае отступите к более традиционному. Обычно это делается для того, чтобы попробовать некоторые операции, а затем проверить, как и ожидалось, никакой магии.
Вот расширенный детектор ECMAScript (на основе ответа @Infigon ).
Дополнения и изменения таковы:
- Он добавляет закрытие функции для создания частных функций и переменных.
- Он использует переключатель для повышения производительности .
- Он исправляет неправильный год для выпуска 5 с помощью объектного литерала , который был выпущен в 2009 году (а не 5 + 2009). Вместо ИЛИ (||) можно было бы использовать нулевое слияние, но его не было в более ранних версиях .
- Он возвращает значения как объект, который можно использовать по своему усмотрению. Например,
console.log(ecmaScriptInfo.edition)
.
Примечание:
Выражение функции стрелки было представлено в выпуске 10 (2019 г.); поэтому был использован стандартный вызов функции.
Сокращение общего ключа и значения литерала объекта появилось в более поздних версиях; поэтому почему
edition: edition
не был укорочен.Шаблонные литералы были представлены в редакции 9 (2018 г.); поэтому почему
Edition: ${edition} | Year: ${year}
не использовался.
ECMAScript поддерживает разные объекты в каждой версии. Чтобы определить версию ECMAScript, мы можем проверить, выходит ли объект в браузер или нет. Если этот объект идентифицирован, это означает, что версия ECMA поддерживается браузером.
Проверьте, что по следующей ссылке есть хороший пример для определения версии ECMAScript.
https://www.devdiscuss.com/how-to-detect-the-ecmascript-version/