为什么在javascript中使用var {VariableName} = require('')?

Nav*_*K N 13 javascript firefox coding-style firefox-addon-sdk

我在Firefox addon-sdk中看到了很多例子,它们在声明变量时使用了以下样式.

var { Hotkey } = require("sdk/hotkeys");
Run Code Online (Sandbox Code Playgroud)

与使用var { Hotkey }相比,它有什么不同var HotKey?为什么要使用额外的花括号?

dav*_*ers 14

这是解构分配.

var {Hotkey} = require('sdk/hotkeys');
Run Code Online (Sandbox Code Playgroud)

相当于:

var Hotkey = require('sdk/hotkeys').Hotkey;
Run Code Online (Sandbox Code Playgroud)

另见和谐:解构提案,其中包括以下示例:

// object destructuring
var { op: a, lhs: b, rhs: c } = getASTNode()

// digging deeper into an object
var { op: a, lhs: { op: b }, rhs: c } = getASTNode()
Run Code Online (Sandbox Code Playgroud)

  • `var {op:a} = getASTNode()`相当于`var a = getASTNode().op`.":"左侧的标记是属性名称,":"右侧的标记是变量名称.但是,通常,在两种情况下都希望使用相同的名称,如`var {Hotkey:Hotkey} = require('sdk/hotkeys')`.因为这是一种常见的模式,所以有一个简写:`var {Hotkey} = require('sdk/hotkeys')`. (2认同)