javascript - JavaScript有switch的表达形式吗?

标签 javascript switch-statement ternary-operator

当有条件地获取一个值时,我喜欢使用三元运算符 (?:) 这样我就可以拥有 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表达式吗?

最佳答案

您首先应该保持内容的可读性和可管理性。将具有四个或五个值的两个或三个条件压缩到一行中几乎任何方式都不可读。

我建议使用这种声明式的方法:

let fooToBarMap = {
    foo: 'bar',
    baz: 42
};

let y = fooToBarMap[x] || 'default';

关于javascript - JavaScript有switch的表达形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853059/

相关文章:

python - 三元运算符 python3.5 的列表理解

javascript - 关于换行格式的 Prettier.js 方法参数

javascript - 带有 Ruby on Rails 的 Ajax 简单 View 刷新

java - 方法不返回值

c# - 为什么我不能在范围内的 switch 语句中使用 "constant"?

swift - 检查 NSIndexPath 的行和部分的开关

Java三元运算符: is behaviour similar to conditional move possible (assembly) upon ART?

javascript - 如何缩短这个三元运算符?

javascript - 当 minDate 和 maxDate 与 Eonasdan datetimepicker 在同一天时,无法选择日期和时间

javascript - 使用javascript循环生成1000个随机10位数字