Ответ 1
ECMAScript 5 был фактически сконструирован таким образом, что реализации не нужно "обновлять для запуска" на нем.
В существующем поведении мало изменений, но в основном ES5 добавляет новые собственные объекты (например, Object.create
, Array.prototype.map
, String.prototype.trim
и т.д.) и стандартизирует некоторые из существующих де-факто-функций (от вездесущих терминаторов строк) в строковых литералах "," доступ к свойствам по строкам "и" косвенное поведение eval "для менее популярных" аксессоров "и расширений массива/строки).
Наибольшее изменение в поведении - строгий режим - было сделано по той же причине; для перехода от ES3 к ES5 менее болезненным.
Сказав, что V8 реализует заметный фрагмент функций ES5, включая строгий режим (одно из последних дополнений).
Если вы посмотрите на совместимость с ES5. table вы можете увидеть функции ES5, реализованные в Chrome, - которые должны близко (и я думаю - полностью) коррелировать с V8.
Вы также можете увидеть, что поддержка строгого режима в значительной степени реализована в Chrome, а это значит, что она также должна быть в V8. Чтобы дважды проверить, я просто запустил этот код в консоли (v8 v3.2.3.1) и получил SyntaxError, как ожидалось:
> (function(){"use strict"; with({x:1}) return x})()
(shell):1: SyntaxError: Strict mode code may not include a with statement
(function(){"use strict"; with({x:1}) return x})()
^^^^
Итак, у вас это есть. V8 определенно реализует большинство функций ES5, включая строгий режим;)