switch语句不响应条件

时间:2019-12-18 12:57:07

标签: javascript switch-statement

我正在尝试根据用户报告的严重性类型来更改背景颜色。我现在已经对其进行了硬编码,仅用于测试目的。

问题是,当我记录严重性[randomSeverity]时,它会给出正确的值,但是switch语句似乎没有监听它?

const severity =['Extreme', 'High', 'Medium', 'Low', 'Trivial']
const randomSeverity = Math.floor(Math.random() * Math.floor(5))

var bgcolor = () => {
    switch(severity[randomSeverity]){
      case 'Extreme':
        bgcolor = 'bg-red-600'
        break
      case 'High':
        bgcolor = 'bg-orange-600'
        break
      case 'Medium':
        bgcolor = 'bg-yellow-600'
        break
      case 'Low':
        bgcolor = 'bg-green-300'
        break
      case 'Trivial':
        bgcolor = 'bg-green-600'
        break
      default:
        bgcolor = 'bg-white'
        console.log('init')
    }
} 

1 个答案:

答案 0 :(得分:2)

您将 function 存储在变量bgcolor中:

var bgcolor = () => { ... }

但是您永远不会调用该功能。即使您愿意...分配一个函数,然后应使用值覆盖自身也是一个奇怪的构造。

如果删除该代码段周围的功能部分,它将起作用:

const severity = ['Extreme', 'High', 'Medium', 'Low', 'Trivial']
const randomSeverity = Math.floor(Math.random() * 5)

var bgcolor;

switch (severity[randomSeverity]) {
  case 'Extreme':
    bgcolor = 'bg-red-600'
    break
  case 'High':
    bgcolor = 'bg-orange-600'
    break
  case 'Medium':
    bgcolor = 'bg-yellow-600'
    break
  case 'Low':
    bgcolor = 'bg-green-300'
    break
  case 'Trivial':
    bgcolor = 'bg-green-600'
    break
  default:
    bgcolor = 'bg-white'
    console.log('init')
}

console.log(randomSeverity);
console.log(severity[randomSeverity]);
console.log(bgcolor);

此外,我将Math.floor(5)简化为5,尝试舍入整数是没有意义的,因为它仍然会返回相同的值。