将相同函数的结果添加到没有临时变量的多个变量
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
.
写起来很有趣,但当然不要这样做。
这是我的:
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
.
写起来很有趣,但当然不要这样做。