Javascript变量语句作为键值对

时间:2017-09-01 20:40:47

标签: javascript relay

我正在使用Relay编写javascript,我发现了以下声明:

const { connectionType: UsersConnectionType } = connectionDefinitions( { nodeType: UserType });

{ connectionType: CustomerConnectionType }究竟是什么意思?如何在以后引用该变量以及如果我有两个以上的变量如何导出它,例如:

const { connectionType: CustomerConnectionType } = connectionDefinitions( { nodeType: CustomerType });
const { connectionType: ItemConnectionType } = connectionDefinitions( { nodeType: ItemType });

2 个答案:

答案 0 :(得分:1)

我想我刚刚发现它 - 它是Destructuring assignment。还有其他形式的数组,等等。这是ECMAScript的第6件事。

  

可以从对象解压缩属性,并将其分配给名称与对象属性不同的变量。

var o = {p: 42, q: true};
var {p: foo, q: bar} = o;

console.log(foo); // 42 
console.log(bar); // true

坦率地说,我认为语法令人困惑 - 我会使用var { foo: p, bar: q}代替(或完全不同的语法,所以它看起来并不像对象初始化那样容易混淆),但我想他们有他们的理由

在你的情况下,行

const { connectionType: UsersConnectionType } = connectionDefinitions({nodeType:UserType});

实际上相当于

const UsersConnectionType = connectionDefinitions({nodeType:UserType}).connectionType;
只是有更多的金光闪闪和困惑。 :)

答案 1 :(得分:0)

这是一种初始化UsersConnectionType的方法,看看示例



function A(){
    return {x : 5};
}

let {x : y} = A();

console.log(y);




如果你知道函数的返回值是什么,你可以用这种方式初始化它们。

{x : y} 

这里y被赋予从函数A()

返回的x的值