javascript - 测试变量的开关和测试语句的开关之间的区别
问题描述
var age = 16;
switch (true) {
case age < 16:
console.log("is a boy, he only drinks juice");
break;
case age >= 16 && age <= 20:
console.log("he can drink beer now ");
break;
default:
console.log("This is not working");
}
var age = 13;
switch (age) {
case age < 16:
console.log("is a boy, he only drinks juice");
break;
case age >= 16 && age <= 20:
console.log("he can drink beer now ");
break;
default:
console.log("This is not working");
}
为什么第二个开关不起作用?第一个有效,如何使第二个开关有效?
解决方案
switch-case
比较表达式中产生的值与定义为 case 的值之间的相等性。
在您的第一条语句中,表达式是true
您要比较的值,因此情况应该是case true
and case false
。在你写'age> = 16'等的代码中......这些实际上是真或假的值,因此switch
可以将 中的值与cases
.
在您的第二个语句中,您尝试将age
哪个是整数与 的情况进行比较booleans
,因此不会遇到任何情况。
在您的情况下,switch-case
声明不适合您的提议(您可以使用if-else
)
推荐阅读
- c# - 如果 JSON 字符串具有未闭合的 html 标签,如何使用 AntiXss
- angular - Angular 7 性能
- javascript - 如何使用键值从 Firebase 检索数据
- c# - 将选定的下拉列表项显示到指定的 gridview 列中
- python - 用列表填充 pd 数据框作为循环列表列表的列
- appv - 我创建一个 APP-V FileNet IDM 桌面包?
- css - Webpacker 3.5 不提供 CSS。导轨 5.2.2
- php - 如何在 phpspreadsheet 中自定义日期格式?
- php - Magento1 Feefo小部件js与prototype.js冲突
- javascript - Firebase 数据库重写数据