在查看Mozilla(Firefox)Add-on 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上也找不到任何信息。再说,也许我不知道该搜索什么。