我们说我有一个对象
const obj = { width: 100, height: 200 }
我希望将该对象传递给方法
myFunc( obj );
在该方法中,我希望拉出高度,但同时要减去一个值。我只希望这样做一次,此后它永远不会改变。
执行以下操作将使我得到想要的正确高度,例如150。
let {height: localHeight} = obj;
localHeight = localHeight - 50;
如何单行执行以上操作? 这样的东西-但我知道这行不通。
const { height: (localHeight = localHeight - 50) } = obj
答案 0 :(得分:2)
有可能,尽管这是一种会损害可读性的hack,但可能会产生错误(如果对象将来会包含假属性),并且不应在实际产品中使用。
您可以解构不存在的属性,并使用默认值进行减法。
const obj = { width: 100, height: 200 }
const { height, localHeight = height - 50 } = obj
console.log(localHeight)
答案 1 :(得分:1)
否,这是不可能的。销毁就是这样,它将属性分配给目标表达式。赋值语法没有任何可用于更改赋值的修饰符(默认初始化程序已经是拉伸)。
只需不使用解构,您就可以在单个语句中完成它:
const localHeight = obj.height - 50;
比解构所能实现的任何事情都要短得多,也没有那么复杂。