77

这个最近的视频声称 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 中部分实现了吗?我可以使用哪些代码片段?

4

3 回答 3

90

节点 v6 和更新版本的更新:节点 v6 支持解构赋值,无需任何特殊需要:

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

对于旧版本的节点:您可以通过键入以下内容获取支持的和谐功能列表:

node --v8-options | grep harmony

节点 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'
于 2013-06-29T11:29:45.287 回答
15

最近发布的node.js v6使用的是 V8 版本 5.0,它支持93% 的 ES2015 语言功能(甚至在 v6.1 中支持 96%)。

解构分配现在可以被认为是稳定的,并且可以在没有任何标志的情况下使用。

于 2016-05-09T11:26:16.930 回答
10

ES6 兼容性表显示Chrome 45 或 Node v4 都不支持解构。

于 2015-10-02T23:45:09.497 回答