在查看 Mozilla (Firefox) 附加 SDK 的一些 Javascript 代码时,我看到了一种我以前从未见过的变量声明:
var { foo, bar } = someFunction("whatever"); // just an example
看到变量名周围的花括号了吗?事实证明,这是一种将对象的属性值一次性分配给多个变量的方法。它似乎类似于解构赋值或 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 上找不到任何关于它的信息。再说一次,也许我只是不知道要搜索什么。