为什么在javascript中使用var{VariableName}=require(';';)?
我在Firefox中看到过很多示例,它们在声明变量时使用以下样式为什么在javascript中使用var{VariableName}=require(';';)?,javascript,firefox,coding-style,firefox-addon-sdk,Javascript,Firefox,Coding Style,Firefox Addon Sdk,我在Firefox中看到过很多示例,它们在声明变量时使用以下样式 var { Hotkey } = require("sdk/hotkeys"); 使用var{Hotkey}与使用var Hotkey有什么区别?为什么要使用额外的花括号?这是 相当于: var Hotkey = require('sdk/hotkeys').Hotkey; 另见提案,其中包括以下示例: // object destructuring var { op: a, lhs: b, rhs: c } = getAST
var { Hotkey } = require("sdk/hotkeys");
使用var{Hotkey}
与使用var Hotkey
有什么区别?为什么要使用额外的花括号?这是
相当于:
var Hotkey = require('sdk/hotkeys').Hotkey;
另见提案,其中包括以下示例:
// 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的概念:。我相信ECMAScript可能会采用类似的东西(这就是为什么它可能已经出现在Firefox插件中的原因)。谢谢。破坏任务听起来很有趣。然而,我没有看到类似的例子,比如
var{Hotkey}=require('sdk/Hotkey')代码>在您指向的文档链接中。var{op:a}=getASTNode()
相当于var a=getASTNode().op
。“:”左侧的标记是属性名,“:”右侧的标记是变量名。但是,人们通常希望在这两种情况下使用相同的名称,如var{Hotkey:Hotkey}=require('sdk/hotkeys')
。因为这是一种常见的模式,所以有一个缩写:var{Hotkey}=require('sdk/hotkeys')
。在Mozilla增强版的JS中,解构已经存在了很长一段时间了——有许多特定于Mozilla的JS扩展,它们也正在找到协调的方法,比如数组理解和生成器。
// object destructuring
var { op: a, lhs: b, rhs: c } = getASTNode()
// digging deeper into an object
var { op: a, lhs: { op: b }, rhs: c } = getASTNode()