首页 > 解决方案 > 如何在其赋值表达式中重用目标的值?

问题描述

如何使这项工作:

(()=>{let a={}, b; console.log((b=a[`complex and long expression`])=9*b+1}))()

我想将目标的值重用到赋值表达式中。

我想避免写这么长:

(()=>{let a={}, b; console.log(a[`complex and long expression`]=9*a[`complex and long expression`]+1)})()

标签: javascriptfunctionobjectecmascript-6

解决方案


您修改后的问题询问如何执行此操作:

(()=>{let a={}, b; console.log(a[`complex and long expression`]=9*a[`complex and long expression`]+1)})()

不重复自己。

唯一的方法是在 上重复属性访问a,但没有理由重复complex and long expression

(()=>{let a={}, ex = `complex and long expression`; console.log(a[ex] = a[ex] * 9 + 1}))()

如果它只是* 9,就像你原来的问题一样,你可以使用复合赋值:

我想避免写这么长:

(()=>{let a={}, b; console.log(a[`complex and long expression`]=9*a[`complex and long expression`]}))()

您可以使用*= 9同时进行乘法和赋值。

(()=>{let a={}; console.log(a[`complex and long expression`]*=9}))()
// ---------------------------------------------------------^^

*=获取左侧操作数的值,将其乘以右侧操作数,然后分配回左侧操作数。这些复合赋值运算符存在于大多数数学和按位运算中。

更多关于 MDN的信息。


推荐阅读