有没有一种方法可以在switch语句中转换if语句?

时间:2020-10-10 21:56:29

标签: javascript if-statement switch-statement

我有此代码

if (header.classList.contains("capricorn")) {
    //star sign description
    para.innerHTML = starSign.Capricorn;
  } else if (header.classList.contains("aquarius")) {
    para.innerHTML = starSign.Aquarius;
  } else if (header.classList.contains("pisces")) {
    para.innerHTML = starSign.Pisces;

我想在switch语句中打开它,这可能吗?

1 个答案:

答案 0 :(得分:1)

根据starSign对象的属性,考虑对检查进行参数设置:

function chooseSign(classList, signs) {
  return signs.find(s => classList.contains(s.toLowerCase());
}

...并相应地使用它:

const sign = chooseSign(header.classList, Object.keys(starSign));
if (sign) {
  para.innerHTML = starSign[sign];
}

我假设starSign是只有12个键的文本集合。如果不是这种情况,请考虑从中分离出一个单独的阵列。


通常,当您有一系列if-else if-else if反复检查本质上相同的东西时,请考虑将单独的功能用于相同的目的。不仅使您有机会简化代码(如本例中所示),而且还隔离了业务逻辑决策,使您的代码更具可读性和可测试性。