【发布时间】:2012-05-10 00:36:38
【问题描述】:
在查看 Mozilla (Firefox) 附加 SDK 的一些 Javascript 代码时,我看到了一种我以前从未见过的变量声明:
var { foo, bar } = someFunction("whatever"); // just an example
看到变量名周围的花括号了吗?事实证明,这是一种将对象的属性值一次性分配给多个变量的方法。它似乎类似于 destructuring assignment 或 PHP 的 list,除了对象属性而不是数组。
我实际上是通过一些摆弄发现了这一点,因为似乎没有关于它的文档。看看这段代码:
function gimmeAnObject() {
return {
foo: "hey",
bar: "sup"
};
}
console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }
var { foo, bar } = gimmeAnObject();
console.log(foo); // hey
console.log(bar); // sup
我还发现这只适用于 Firefox。 Chrome 会改为抛出错误:“Uncaught SyntaxError: Unexpected token {”。这就解释了为什么我在开始查看 Firefox 插件代码之前没有看到它。
有没有其他人见过这种变量声明?为什么我找不到任何关于它的文档?由于它只适用于 Firefox,我认为它可能是 Mozilla 的东西,但我什至在 MDN 上找不到任何关于它的信息。再说一次,也许我只是不知道要搜索什么。
【问题讨论】:
-
在撰写我自己的一个几乎相同的问题时发现了这个问题:)
标签: javascript firefox syntax variable-assignment mozilla