Как определить версию 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 поддерживает разные объекты в каждой версии. Чтобы определить версию ECMAScript, мы можем проверить, выходит ли объект в браузер или нет. Если этот объект идентифицирован, это означает, что версия ECMA поддерживается браузером.

Проверьте, что по следующей ссылке есть хороший пример для определения версии ECMAScript.

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

Другие вопросы по тегам