【发布时间】:2016-08-09 14:06:14
【问题描述】:
当有条件地获取值时,我喜欢使用三元运算符(?:),这样我就可以拥有const 变量声明:
// Better
const foo = x ? 'bar' : 'goo';
// Worse
var foo;
if (x) {
foo = 'bar';
} else {
foo = 'goo';
}
我想对switch 语句做同样的事情。我可以使用一系列嵌套的?:,但是这样比较麻烦并且不能很好地扩展:
const foo = x === 1 ? 'bar' : (x === 2 ? 'goo' : 'zoo');
我什至可以使用闭包,但这也很冗长:
const foo = (() => {
switch(x) {
case 1:
return 'bar';
case 2:
return 'goo';
default:
return 'zoo';
}
})();
JavaScript 中有 switch 表达式 吗?
【问题讨论】:
-
OP 表示一个表达式
-
如果你问 JavaScript 是否有用于开关的东西,同样的 if 语句有三元运算符,我认为任何语言都没有。
-
@DrewKennedy 我也没看到
-
如果您试图将两个或三个以上的条件和值塞进同一行……您最好使用实际的
switch来编写干净、可读的代码我>。能够将所有内容压缩到一行中并没有固有的优势。 -
有一个适合此用例的“do 表达式”提案。不幸的是,它是still at stage 0,尽管它受到 Babel 的支持。
标签: javascript switch-statement ternary-operator