Недавно появился новый стабильный выпуск Node.js (0.12) с обновленным движком Google v8 JavaScript, v3.28.73 .
Какие функции ECMAScript 6 в настоящее время присутствуют в Node.js без использования --harmony
флага?
Я проверил несколько сайтов, претендующих на перечисление функций ES 6, но все они выглядят устаревшими - наиболее заметно, эта таблица ( Обновление: теперь обновляется с текущим статусом Node.js по состоянию на 0.12 ), потому что некоторые функции перечислены как требует --harmony
флаг, пока я обнаружил, что некоторые из них включены по умолчанию (Карты, Наборы, Символы, чтобы назвать несколько). Обновление : с тех пор стали доступны специальные таблицы узлов
Кроме того, попытка отыскать эту информацию исключительно для движка v8 дает слишком актуальную информацию - текущая версия v8 - 4.2. * , Что значительно опережает то, что использует Node.js.
Я надеюсь, что этот вопрос (и его ответы) станут исчерпывающим описанием того, какие функции ES 6 теперь доступны для разработчиков Node.js.
Функции ES 6, включенные в Node.js 0.12, о которых я в настоящее время знаю:
- Карты, Наборы / Слабые Карты, Слабые Наборы
- Символы
- Object.observe
- обещания
- Число
- .isInteger
- .isSafeInteger
- .isNaN
- epsi;
- .MIN_SAFE_INTEGER
- .MAX_SAFE_INTEGER
- математический
- .clz32
- .imul
- .подписать
- .log10
- .log2
- .log1p
- .expm1
- .cosh
- .sinh
- .tanh
- .acosh
- .asinh
- .atanh
- .trunc
- .fround
- .cbrt
- .hypot
источник
Ответы:
Особенности без
--harmony
флага:Я думаю, что это все, что у нас есть без
--harmony
флага.Особенности с
--harmony
флагом:--harmony_arrow_functions
флага в отличие отio.js
)strict mode
Строковые методы:
includes()
в действительной спецификации ES6)Прокси (за
--harmony-proxies
флагом)Я думаю, что это все. Может быть, если я что-то забыл - я добавлю это позже в список.
источник
--harmony
флагом. :)--harmony
? Как в${varname}
синтаксисе обратной галочки ?--harmony
флагом, ни без него. Ноiojs
поддерживает их без необходимости каких-либо флагов.Особенности ES6 просачиваются к узлу поэтапно. Узел использует Google V8 в качестве движка JavaScript. Функция, поддерживаемая в Node, означает, что сначала она должна быть реализована в V8, а затем команда Node должна включить ее в Node.js.
Команда Google выпускает новую версию V8 примерно каждые шесть недель, а затем команда разработчиков Node может использовать ее.
Вручную составленные списки языковых функций хороши, но могут быстро устареть. Узел 0.12 больше не является текучим, но обычно список, созданный вручную, становится устаревшим, как только выходит новая версия Node.
Вот два альтернативных способа проверить, какие функции поддерживает версия Node, не полагаясь на статический список. Для дальнейшего чтения и более подробных примеров их использования вы можете проверить «Как проверить, поддерживает ли Node.js языковую функцию ES 6»
# 1 Easy - таблица совместимости
Динамически генерируемый список, который опирается на небольшие тесты для подтверждения наличия языковой функции, остается в актуальном состоянии. Одним из таких популярных списков является kangax.github.io/compat-table/es6/. Нас интересуют только функции Node, поэтому вы можете использовать
http://node.green
который использует те же данные, что и сайт kangax.
# 2 Hard - версия с возвратом в V8
Node использует движок V8, поэтому определение, какая версия V8 включена в Node, говорит нам о том, какие функции языка ES6 поддерживаются. Вы можете узнать, какая версия V8 была включена в Node
node -p process.versions.v8
.Затем, используя ресурсы проекта Google V8, вы можете найти, какие функции реализованы в каждой версии. Проект V8 поддерживает систему отслеживания проблем, где вы можете найти ES6 + помимо функций, отмеченных меткой гармонии .
источник