使用Javascript - 分配多个变量在变量声明使用大括号对象属性(Javascript -

2019-06-24 07:10发布

而在寻找的Mozilla的(Firefox)的一些JavaScript代码附加SDK,我看到了一种我从来没有见过的变量声明:

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浏览器将代替抛出一个错误:“ 未捕获的SyntaxError:意外的标记{”。 这解释了为什么我还没有看到它之前,我开始寻找在Firefox插件的代码。

有其他人看到这种前变量声明? 为什么我无法找到任何文件? 因为它只是在Firefox的作​​品,我认为这可能是一个Mozilla的事情,但我甚至不能找到关于它的任何MDN。 再说,也许我只是不知道该怎么寻找。

Answer 1:

综观“解构分配”链接(即http://en.wikipedia.org/wiki/JavaScript_syntax#Assignment和http://dailyjs.com/2011/09/12/destructuring/ )看起来,这种结构解构赋值。

维基百科:

在Mozilla的JavaScript的,因为1.7版本,解构赋值允许数据结构部件的几个变量赋值一次。 分配的左手侧是类似于一个任意嵌套对象/阵列字面含1-左值在其叶子将要接收所分配的值的子结构的图案。

在JavaScript数组和对象都或多或少相同的,所以它是不是很奇怪,支持阵列结构还支持对象。



Answer 2:

你不能做到这一点。 你必须命名var和做这样的事情:

var myObj = (function(){
    return {
        foo: 'foo',
        bar: 'bar'
    };
})();


文章来源: Javascript - Assigning multiple variables to object properties using curly braces in variable declaration