ecmascript-6 - ES2015在同一范围内两次分解对象

标签 ecmascript-6 ecmascript-harmony

有没有一种干净的方法可以从同一范围内的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
}

最佳答案

您可以将分配包装在parens中,以通过解构来重新分配变量。之所以需要这样做,是因为否则解析器将{假定为开始一个块,而不是对象文字或分配模式。 This blog post详细解释了这种情况。

function(oldState, newState) {
  let {foo, bar} = oldState;
  // do stuff //
  ({foo, bar} = newState);
}

关于ecmascript-6 - ES2015在同一范围内两次分解对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252827/

相关文章:

node.js - 无法更新连接用户数(Node.js 和 Socket.io)

javascript - promise 链 : Use result from previous promise in next then callback

javascript - ES6 : harmony-proxies: Why does `tracedObj.squared(9)` return undefined?

node.js - Node 0.12.x const 处于严格模式问题

javascript - React : statusCode: 400,名称: "Error",消息: "The limit parameter "未定义“无效

javascript - ES6 什么时候可以在 IE 中使用?

node.js - 在代理上下文中运行代码

javascript - 将父级设置为子级 - 循环引用

javascript - 从数组中过滤数据的最佳方法