Хотя Chrome будет выполнять Javascript, помеченный как «javascript1.7», он не поддерживает функции JS1.7, такие как оператор переменной с ограниченной областью видимости «let».
Этот код будет работать в Firefox 3.5 но не в Chrome, использующем V8:
<script language="javascript" type="application/javascript;version=1.7">
function foo(){ let a = 4; alert(a); }; foo();
</script>
Если вы измените язык на «javascript1.7» и опустите тип, он не будет работать с функциями JS 1.7 в Firefox 3.5. Раздел типа необходим.
Похоже, это связано с общей ошибкой WebKit, https://bugs.webkit.org/show_bug.cgi?id=23097 ; может случиться так, что Chrome имитирует поведение Safari, даже если он использует другой движок.
На вопрос о поддержке функций JS 1.8 команда V8 ответила, что они пытались отслеживать версию, используемую в Safari, чтобы страницы действовали как то же самое в обоих браузерах.
Google Chrome использует механизм V8 javascript , который в настоящее время указывает, что это реализует ECMA-262, 3-й выпуск. Это подразумевало бы, что поддерживает, по крайней мере, версию 1.5.
Google Chrome поддерживает до Javascript 1.7:
<script language="javascript1.7">alert(1.7);</script> - Alerts
<script language="javascript1.8">alert(1.8);</script> - Doesn't alert
Вот простая Javascript 1.6 функция Chrome (и пользователи V8, например, node.js) не будут запускаться: для каждого ... в
for each (variable in object)
statement
Так как это JS 1.5 (по ответу J c) единственная версия, которую Chrome утверждает полностью реализовать.
На самом деле команда Chrome в основном стремилась к совместимости с Safari (в то время наиболее известным пользователем Webkit'а), и отказалась от функций на этих основаниях.