首页 > 解决方案 > 开关情况下的条件被忽略

问题描述

我正在尝试使用如下的 switch 语句。但即使状态为 301,case (status > 200 && status < 400)也会忽略大小写,结果是“默认”大小写。我究竟做错了什么?在 case 语句中不能使用条件吗?

status = 301;
switch (status) {
  case 0:
  case 200:
    console.log('200');
    break;
  case (status > 200 && status < 400):
    console.log('200-400');
    break;
  case 404:
    console.log('404');
    break;
  default:
    console.log('Si è verificato un errore irreversibile.');
}

最后我用一个简单的 if 解决了,但我想知道为什么这不起作用。

标签: javascriptif-statementswitch-statement

解决方案


这不是switch/case在 JavaScript 中的工作方式;您只能匹配值,而不是条件。这里发生的情况是status > 200 && status < 400计算结果为true,并且true显然与 不同301

事实上,一个简单的if/ else if/.../else链是这里常用的解决方案。


推荐阅读