我在Firefox addon-sdk中看到很多例子,它在聲明一個變量時使用下面的樣式。爲什麼在javascript中使用var {VariableName} = require('')?
var { Hotkey } = require("sdk/hotkeys");
它使什麼區別與var { Hotkey }
比使用var HotKey
?爲什麼使用額外的花托?
我在Firefox addon-sdk中看到很多例子,它在聲明一個變量時使用下面的樣式。爲什麼在javascript中使用var {VariableName} = require('')?
var { Hotkey } = require("sdk/hotkeys");
它使什麼區別與var { Hotkey }
比使用var HotKey
?爲什麼使用額外的花托?
var {Hotkey} = require('sdk/hotkeys');
等同於:
var Hotkey = require('sdk/hotkeys').Hotkey;
也看到了harmony:destructuring建議,其中包括下面的例子:
// object destructuring
var { op: a, lhs: b, rhs: c } = getASTNode()
// digging deeper into an object
var { op: a, lhs: { op: b }, rhs: c } = getASTNode()
我熟悉來自CoffeeScript的概念:http://coffeescript.org/#destructuring。我相信ECMAScript可能採用類似的東西(這就是爲什麼它可能已經出現在Firefox附加組件中)。 – davidchambers 2013-02-13 07:24:17
謝謝。破壞任務聽起來很有趣。但是,在您指向的文檔鏈接中,我沒有看到類似的例子,例如'var {Hotkey} = require('sdk/hotkeys');'。 – 2013-02-13 08:22:55
'var {op:a} = getASTNode()'等同於'var a = getASTNode()。op'。 「:」左側的標記是屬性名稱,「:」右側的標記是變量名稱。然而,通常情況下,我們希望在這兩種情況下使用相同的名稱,例如'var {Hotkey:Hotkey} = require('sdk/hotkeys')'。因爲這是一種常見模式,所以有一個簡寫:var {Hotkey} = require('sdk/hotkeys')'。 – davidchambers 2013-02-13 09:15:15
自己也不知道,但是這可能對你有一些信息:http://stackoverflow.com/questions/4445496/curly-bracket-variable-in-javascript – CodeMoose 2013-02-13 07:19:36