【问题标题】:Why use var { VariableName } = require('') in javascript?为什么在 javascript 中使用 var { VariableName } = require('')?
【发布时间】:2013-01-28 16:33:04
【问题描述】:

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

var { Hotkey } = require("sdk/hotkeys");

使用var { Hotkey } 与使用var HotKey 有什么区别?为什么要使用额外的花括号?

【问题讨论】:

标签: javascript firefox coding-style firefox-addon-sdk


【解决方案1】:

这是destructuring assignment

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 的概念:coffeescript.org/#destructuring。我相信 ECMAScript 可能会采用类似的东西(这就是它可能已经出现在 Firefox 附加组件中的原因)。
  • 谢谢。破坏任务听起来很有趣。但是,在您指向的文档链接中,我没有看到类似 var {Hotkey} = require('sdk/hotkeys'); 的示例。
  • var {op: a} = getASTNode() 等价于var a = getASTNode().op。 “:”左边的记号是属性名,“:”右边的记号是变量名。但是,通常希望在两种情况下都使用相同的名称,例如var {Hotkey: Hotkey} = require('sdk/hotkeys')。因为这是一种常见的模式,所以有一个速记:var {Hotkey} = require('sdk/hotkeys')
  • 解构在 Mozilla 的增强版 JS 中已经存在了很长时间 - 有许多 Mozilla 特定的 JS 扩展也正在进入 Harmony,例如数组解析和生成器。
猜你喜欢
  • 2014-08-31
  • 2012-03-28
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 2019-07-17
  • 2019-02-27
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多