提问者:小点点

何时使用Switch和If else语句?


(对不起,我英语不好)

大家好!

我是新来的!

我现在正在学习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!

谁能帮帮忙吗?


共3个答案

匿名用户

首先,您在第一个大小写表达式中有一个逻辑错误,您喜欢检查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。