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 的解决方案非常适合您的问题。
我有两个变量 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 的解决方案非常适合您的问题。