javascript - 开关情况下的条件被忽略
问题描述
我正在尝试使用如下的 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 解决了,但我想知道为什么这不起作用。
解决方案
这不是switch
/case
在 JavaScript 中的工作方式;您只能匹配值,而不是条件。这里发生的情况是status > 200 && status < 400
计算结果为true
,并且true
显然与 不同301
。
事实上,一个简单的if
/ else if
/.../else
链是这里常用的解决方案。
推荐阅读
- javascript - 如何在 SVG 圆环图中旋转圆圈?
- python-2.7 - 分布式 Tensorflow 错误:检查失败:DeviceNameUtils::ParseFullName(new_base, &parsed_name)
- asp.net-core - 如何正确重定向到asp.netcore中的页面
- sql - 如何将字符串的特定部分解析为sql中的各个列?
- jenkins - 有没有办法将部署锁定为仅在一天中的特定时间进行?
- postgresql - 为 postgres 副本创建只读用户
- wordpress - 将 jpg 上传到 wordpress 网站会被拒绝
- python - 如何操纵单例?
- postgresql - 获取上个月的第一个日期
- xamarin - 如何为 Xamarin Native iOS 和 Android 应用程序的新页面添加 ViewModel