ES2015 在同一范围内两次解构对象
ES2015 Destructure object twice in same scope
是否有一种干净的方法可以从同一范围内的 2 个相似对象中解构相同的变量?
function(oldState, newState) {
let {foo, bar} = oldState;
// do stuff //
let {foo, bar} = newState; // illegal double declaration in same scope
{foo, bar} = newState; // illegal, not sure why
let {foo: foo1, bar: bar1} = newState; // legal but ugly
foo = newState.foo; // legal, but requires multiple lines
}
您可以将赋值包裹在括号中以通过解构重新分配变量。这是必要的原因是因为否则解析器假定 {
开始一个块而不是对象文字或赋值模式。 This blog post 更详细地解释了情况。
function(oldState, newState) {
let {foo, bar} = oldState;
// do stuff //
({foo, bar} = newState);
}
是否有一种干净的方法可以从同一范围内的 2 个相似对象中解构相同的变量?
function(oldState, newState) {
let {foo, bar} = oldState;
// do stuff //
let {foo, bar} = newState; // illegal double declaration in same scope
{foo, bar} = newState; // illegal, not sure why
let {foo: foo1, bar: bar1} = newState; // legal but ugly
foo = newState.foo; // legal, but requires multiple lines
}
您可以将赋值包裹在括号中以通过解构重新分配变量。这是必要的原因是因为否则解析器假定 {
开始一个块而不是对象文字或赋值模式。 This blog post 更详细地解释了情况。
function(oldState, newState) {
let {foo, bar} = oldState;
// do stuff //
({foo, bar} = newState);
}