(对不起,我英语不好)
大家好!
我是新来的!
我现在正在学习Switch,对它有点困惑。
更具体地说,我什么时候应该在开关中使用“true”,什么时候使用原来的变量名!
例如,这是我的代码!
var age = 10;
switch(true){
case age>=10:
console.log('He is a kid');
break;
case age>10 && age<=20:
console.log('He is a teenager');
break;
case age>=20 && age<=30:
console.log('He is a young man');
break;
case age>30:
console.log('He is a man')
}
如果我真的切换(真的),这工作完全好,但是如果我做了大多数人所说的切换(年龄),这就不工作了!
所以我有点困惑什么时候用什么!
我的猜测,如果我做的是大于,等于和小于类型的事情与数字,那么你你真的在Swithc!
谁能帮帮忙吗?
首先,您在第一个大小写表达式中有一个逻辑错误,您喜欢检查smaller或equal。
对于下面的大小写表达式,您只需要单个条件,因为您之前检查过,条件破坏了语句。
对于最后一部分,您可以使用default
,它仅在没有正确条件时调用。
null
var age = 10;
switch (true) {
case age <= 10:
console.log('He is a kid');
break;
case age <= 20:
console.log('He is a teenager');
break;
case age <= 30:
console.log('He is a young man');
break;
default:
console.log('He is a man')
}
你说的没错。
开关使用严格比较===将其“expression”与大小写“expression”子句匹配,并将控制权转移给该子句。
如果您的case表达式包含其他操作(小于,更高或其他复杂操作),那么您可以使用“switch(true){”并在“case”级别进行正常比较。
如MDN中所述:switch语句计算表达式,将表达式的值与case子句匹配,并执行与该case相关联的语句,以及在匹配case之后的case中的语句。
这意味着switch语句仅用于精确匹配。 在使用switch(true)时,没有任何用处,也没有办法告诉它将如何进行。
这个答案对大多数编程语言都有效,而不仅仅是对JS。