This recent video claims that EMCAScript 6 destructuring is already partially implemented in Node.JS. I have tried various examples (using v0.10.12 and the --harmony
flag), such as
var [a, b] = [1, 2];
and
var {a: a, b: b} = {a: 1, b: 2};
to no avail. This ticket seems to suggest that destructuring is not yet supported in V8.
Is destructuring really partially implemented in Node.JS? What are snippets of code I can play with?
JavaScript Object Destructuring is the syntax for extracting values from an object property and assigning them to a variable. The destructuring is also possible for JavaScript Arrays. By default, the object key name becomes the variable that holds the respective value.
Destructuring is a JavaScript expression that allows us to extract data from arrays, objects, and maps and set them into new, distinct variables. Destructuring allows us to extract multiple properties, or items, from an array at a time.
As of the latest Chrome (49) destructuring is now supported. As long as you stick to Chrome or Node (with the appropriate flags) you can now use just about all of ES6 without even needing a transpiler like Babel.
Destructuring Assignment is a JavaScript expression that allows to unpack values from arrays, or properties from objects, into distinct variables data can be extracted from arrays, objects, nested objects and assigning to variables.
The lately released node.js v6 is using V8 version 5.0 which is supporting 93% of ES2015 language features (even 96% in v6.1).
Destructuring assignments can now be considered stable and can be used without any flags.
Update for node v6 and newer: Node v6 supports destructuring assignment without anything special needed:
var [a, b] = [1, 2];
For older versions of node: You can get the list of supported harmony features by typing:
node --v8-options | grep harmony
node 5.x will give you:
--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")
The flag you need, --harmony_destructuring
, was added in Node 4.1. Currently, you'll need to pass the --harmony_destructuring
flag to enable the feature:
$ node --harmony_destructuring > var {foo} = {foo: 'bar'}; undefined > foo 'bar'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With