Разрушение в Node.JS

Это последнее видео утверждает, что деструктуризация EMCAScript 6 уже частично реализована в Node.JS. Я пробовал различные примеры (используя v0.10.12 и флаг --harmony), например

var [a, b] = [1, 2];

и

var {a: a, b: b} = {a: 1, b: 2};

безрезультатно. Этот билет, похоже, говорит о том, что деструктурирование пока не поддерживается в V8.

Действительно ли разрушение действительно реализовано в Node.JS? Что такое фрагменты кода, с которым я могу играть?

Ответ 1

Обновление для node v6 и новее: node v6 поддерживает назначение деструктуризации без каких-либо особых потребностей:

var [a, b] = [1, 2];

Для более старых версий node: вы можете получить список поддерживаемых функций гармонии, набрав:

node --v8-options | grep harmony

node 5.x даст вам:

--es_staging (enable all completed harmony features)
--harmony (enable all completed harmony features)
--harmony_shipping (enable all shipped harmony fetaures)
--harmony_modules (enable "harmony modules" (in progress))
--harmony_regexps (enable "harmony regular expression extensions" (in progress))
--harmony_proxies (enable "harmony proxies" (in progress))
--harmony_sloppy_function (enable "harmony sloppy function block scoping" (in progress))
--harmony_sloppy_let (enable "harmony let in sloppy mode" (in progress))
--harmony_unicode_regexps (enable "harmony unicode regexps" (in progress))
--harmony_reflect (enable "harmony Reflect API" (in progress))
--harmony_destructuring (enable "harmony destructuring" (in progress))
--harmony_default_parameters (enable "harmony default parameters" (in progress))
--harmony_sharedarraybuffer (enable "harmony sharedarraybuffer" (in progress))
--harmony_atomics (enable "harmony atomics" (in progress))
--harmony_simd (enable "harmony simd" (in progress))
--harmony_array_includes (enable "harmony Array.prototype.includes")
--harmony_tostring (enable "harmony toString")
--harmony_concat_spreadable (enable "harmony isConcatSpreadable")
--harmony_rest_parameters (enable "harmony rest parameters")
--harmony_sloppy (enable "harmony features in sloppy mode")
--harmony_arrow_functions (enable "harmony arrow functions")
--harmony_new_target (enable "harmony new.target")
--harmony_object_observe (enable "harmony Object.observe")
--harmony_spreadcalls (enable "harmony spread-calls")
--harmony_spread_arrays (enable "harmony spread in array literals")
--harmony_object (enable "harmony Object methods")

Флаг, который вам нужен, --harmony_destructuring, был добавлен в node 4.1. В настоящее время вам необходимо передать флаг --harmony_destructuring, чтобы включить эту функцию:

$ node --harmony_destructuring
> var {foo} = {foo: 'bar'};
undefined
> foo
'bar'

Ответ 2

Недавно выпущенный node.js v6 использует версию V8 версии 5.0, которая поддерживает 93% языковых возможностей ES2015 (даже 96 % в v6.1).

Назначения деструктурирования теперь могут считаться стабильными и могут использоваться без каких-либо флагов.

Ответ 3

Таблица ES6 показывает, что деструктурирование не поддерживается ни в Chrome 45, ни в Node v4.