将相同函数的结果添加到没有临时变量的多个变量

Add result of same function to multiple variables without temporary variable

这是我的:

let num1 = 0;
let num2 = 5;

num1 += longFunction();
num2 += longFunction();

我知道我能做到:

let num1 = 0;
let num2 = 5;

let _ = longFunction();
num1 += _;
num2 += _;

但这增加了一个临时变量,在我看来这应该是一种代码味道。我永远不会在这两行之后使用 _。

有没有办法做到这一点而不使用临时变量,而且只调用函数一次?

如果您想避免变量,这里有一个解决方案:

let num1 = 0;
let num2 = 5;

[ , num1, num2] = [longFunction(), num1, num2].map(
  (n, i, arr) => n + arr[0]
)

console.log(num1, num2);


function longFunction() { return 5 }

是代码味道。


这是一个“更好”的。

let num1 = 0;
let num2 = 5;

num2 = (num2 - num1) + (num1 += longFunction())

console.log(num1, num2);


function longFunction() { return 5 }

当赋值给num2时,它会先从num2中减去num1,然后将longFunction的总和(赋值)加到num1 ], 这相当于简单地将 longFunction() 添加到 num2.

写起来很有趣,但当然不要这样做。