Skip to content

ECMAScript 2015 (ES6) и последующие версии

Node.js построен на основе современных версий V8. Поддерживая актуальность последних релизов этого движка, мы обеспечиваем своевременное предоставление разработчикам Node.js новых функций из спецификации JavaScript ECMA-262, а также постоянные улучшения производительности и стабильности.

Все функции ECMAScript 2015 (ES6) разделены на три группы: shipping, staged и in progress:

  • Все функции shipping, которые V8 считает стабильными, включены по умолчанию в Node.js и НЕ требуют никаких флагов времени выполнения.
  • Функции staged, которые являются почти завершенными функциями, но не считаются стабильными командой V8, требуют флага времени выполнения: --harmony.
  • Функции in progress могут быть активированы индивидуально с помощью соответствующего флага harmony, хотя это крайне не рекомендуется, за исключением целей тестирования. Примечание: эти флаги предоставляются V8 и могут потенциально измениться без какого-либо уведомления о снятии с поддержки.

Какие функции поставляются с той или иной версией Node.js по умолчанию?

Веб-сайт node.green предоставляет отличный обзор поддерживаемых функций ECMAScript в различных версиях Node.js, основанный на таблице совместимости kangax.

Какие функции находятся в разработке?

В движок V8 постоянно добавляются новые функции. В целом, ожидайте, что они появятся в будущем релизе Node.js, хотя сроки неизвестны.

Вы можете перечислить все функции в разработке, доступные в каждом релизе Node.js, просмотрев аргумент --v8-options. Обратите внимание, что это неполные и, возможно, нерабочие функции V8, поэтому используйте их на свой страх и риск:

sh
node --v8-options | grep "in progress"

У меня настроена инфраструктура для использования флага --harmony. Следует ли его удалить?

Текущее поведение флага --harmony в Node.js заключается во включении только функций staged. В конце концов, теперь он является синонимом --es_staging. Как упоминалось выше, это завершенные функции, которые еще не считаются стабильными. Если вы хотите обезопасить себя, особенно в производственных средах, подумайте об удалении этого флага времени выполнения, пока он не будет включен по умолчанию в V8 и, следовательно, в Node.js. Если вы оставите его включенным, вам следует быть готовым к тому, что дальнейшие обновления Node.js могут нарушить ваш код, если V8 изменит свою семантику, чтобы более точно следовать стандарту.

Как узнать, какая версия V8 поставляется с определённой версией Node.js?

Node.js предоставляет простой способ вывести список всех зависимостей и соответствующих версий, поставляемых с конкретным бинарным файлом, через глобальный объект process. В случае с движком V8, введите следующее в вашем терминале, чтобы получить его версию:

sh
node -p process.versions.v8