Javascript:条件变量声明有没有更好的shorthand?

Javascript: Is there a better shorthand for conditional variable declaration?

我有两个变量 foo& bar,我想根据 condition.

声明它们

我已经从这里缩短了代码:

let foo = '';
let bar = '';

if (condition) {
  foo = 'hi';
  bar = 'bye';
} else {
  foo = 'bye';
  bar = 'hi';
}

为此:

const foo = condition ? 'hi' : 'bye';
const bar = !condition ? 'hi' : 'bye';

我仍然觉得代码是重复的,必须使用两次三元运算符。无论如何我可以缩短这段代码吗?谢谢:)

你可以用一个条件进行解构。

let [foo, bar] = condition ? ['hi', 'bye'] : ['bye', 'hi'];

您可以使用数组解构作为一种选择:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

const condition = true;
const [foo, bar] = condition ? ['hi', 'bye'] : ['bye', 'hi'];

console.log({foo, bar});

别介意我,只是想用复杂的方式解决这个简单的问题:)

let foo = 'hi';
let bar = 'bye';

[foo, bar] = !condition && [foo, bar].reverse() || [foo, bar];

注意:Nina Scholz 的解决方案非常适合您的问题。