Javascript ES6解构未返回正确的结果

Javascript ES6解构未返回正确的结果,javascript,ecmascript-6,javascript-objects,Javascript,Ecmascript 6,Javascript Objects,我试图用相同的属性名分解两个对象,但只观察到第一个集合的名称 let a, b, ({ a,b } = myObject1); ({ a,b } = myObject2); ie;console.log()中仅包含MyObject 1的值 有人知道如何从不同对象中解构同名属性吗?我不想手动分配每个变量 我试过了 let a, b, ({ a,b } = myObject1); ({ a : test1,b: test2 } = myObject2) console.log(

我试图用相同的属性名分解两个对象,但只观察到第一个集合的名称

let a, b,
 ({ a,b } = myObject1);
({ a,b } = myObject2);
ie;console.log()中仅包含MyObject 1的值

有人知道如何从不同对象中解构同名属性吗?我不想手动分配每个变量

我试过了

let a, b,
     ({ a,b } = myObject1);
    ({ a : test1,b: test2 } = myObject2)
console.log(test1)


但是test1未定义

为变量分配名称

let a, b,
 ({ a,b } = myObject1);
({ a: A,b:B } = myObject2);

为变量指定名称

let a, b,
 ({ a,b } = myObject1);
({ a: A,b:B } = myObject2);
将从两个对象创建变量
a1、b1、a2、b2


将从两个对象中创建变量
a1、b1、a2、b2

如果有更多具有相同结构的对象,则可以使用返回所需属性数组的函数

const getProps = ({ a, b }) => [a, b];

let [a, b] = getProps(myObject1),
    [c, d] = getProps(myObject2);

如果有更多具有相同结构的对象,则可以使用返回所需属性数组的函数

const getProps = ({ a, b }) => [a, b];

let [a, b] = getProps(myObject1),
    [c, d] = getProps(myObject2);

A未定义如问题中所述A未定义如问题a2未定义如果
myObject2
上没有
A
属性,则
a2
的值将未定义。a2未定义如果
myObject2
上没有
A
属性,则
a2
的值将为未定义。这意味着
myObject2
没有属性
a
。至于你最初的问题:你怎么期望
a
b
在同一时间有两个不同的值?那是不可能的。变量的最后一次赋值总是成功的。未定义可能是因为您想在分号所在的位置加一个逗号。您还可以将
let
放在第3行之前。这意味着
myObject2
没有属性
a
。至于你最初的问题:你怎么期望
a
b
在同一时间有两个不同的值?那是不可能的。变量的最后一次赋值总是成功的。未定义可能是因为您想在分号所在的位置加一个逗号。您还可以在第3行之前放置
let