This recent video聲稱EMCAScript 6解構已在Node.JS中部分實現。我已經試過各種實例(使用v0.10.12和--harmony
標誌),如Node.JS中的解構
var [a, b] = [1, 2];
和
var {a: a, b: b} = {a: 1, b: 2};
無濟於事。 This ticket似乎表明解構尚未在V8中得到支持。
解構是否真的在Node.JS中部分實現?什麼是我可以玩的代碼片段?
This recent video聲稱EMCAScript 6解構已在Node.JS中部分實現。我已經試過各種實例(使用v0.10.12和--harmony
標誌),如Node.JS中的解構
var [a, b] = [1, 2];
和
var {a: a, b: b} = {a: 1, b: 2};
無濟於事。 This ticket似乎表明解構尚未在V8中得到支持。
解構是否真的在Node.JS中部分實現?什麼是我可以玩的代碼片段?
更新節點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
已添加到節點4.1中。目前,你需要通過--harmony_destructuring
標誌啓用該功能:
$ node --harmony_destructuring
> var {foo} = {foo: 'bar'};
undefined
> foo
'bar'
的ES6 compatibility table表明,拆解沒有在任何瀏覽器45,或端點V4支持。
即使使用'node --harmony_destructuring' –
在Node v5.0.0中,它可以與'node --harmony_destructuring'配合使用。我不知道v4。 – kernel
適用於節點4.2.2,使用--harmony_destructuring –
最近發佈的node.js v6正在使用V8 5.0版本,即supporting 93%的ES2015語言特性(甚至在6.1版本中爲96%)。
解構賦值現在可以被認爲是穩定的,可以在沒有任何標誌的情況下使用。
奇怪的是,它還沒有'var'工作。 –
@BrianMcCutchon如果沒有'var',你需要執行'({foo} = {foo:'bar})''以防止領先的'{'被解釋爲啓動一個塊。這在任何實現中都是一樣的。 – 2016-05-23 16:53:30
@torazaburo有趣的,沒有想到這一點。當解構數組時,你應該能夠省略'var' /'let',但是在節點中似乎還沒有工作。 –