JavaScript中switch-case语句的用法
首先,在介绍之前,我先跟大家说一下它的基础语法:
switch(值){ 变量的值或是数据值
case 值1:
要执行的代码;
break;
case 值2:
要执行的代码;
break;
...
default:
要执行的代码;
break;
}
执行过程:
程序执行到switch处的小括号,先计算里面的值,拿着计算后的定值,依次和case中的值进行匹配,如果匹配成功,则执行此case里面的代码,执行完毕之后,遇到break,则跳出当前结构,如果匹配都不成功,则要看当前结构当中有没有default,如果有的话,则进入到default处执行里面的代码,如果没有,则跳出当前结构,执行后面的代码。
不知道你们有没有晕,反正我看到这概念我是晕了。我说一下的见解吧:其实就是拿case后面的值和switch处小括号的值做比较,只要两个值是全等于(===)(下面会跟你们介绍,先看着先),那么就会执行case下面的代码段。没错就是这么简单!
===(全等于)
顾名思义,全等于比较的不仅仅是值,还有两个数据的类型的比较,如果类型都不一样,那么两个数据就无可比性了
废话不多说,上一段代码就明白了…
对学员的结业考试成绩评测 成绩>=90 :A 90>成绩>=80 :B 80>成绩>=70 :C 70>成绩>=60 :D 成绩<60 :E
var score = prompt("请输入学员的考试成绩评测"); //成绩
var level; //评测等级
switch(!!score){ //这里的!!是把score这个数据从字符串隐式转为布尔值,当然,这里直接写true完全没问题。
case score >= 90: //score >= 90 这是一个关系表达式,会得到一个布尔值的结果
level = 'A';
break;
case score >= 80:
level = "B";
break;
case score >= 70:
level = "C";
break;
case score >= 60:
level = "D";
break;
default:
level = "E";
break;
}
// 1. 假如我输入的是91
// 2. 往下走会得到一个“91”的字符串(prompt()这个函数返回的值是字符串)
// 3. !!"91"会变成true(也就是布尔类型)
// 4. 而case后面的语句"score >= 90"也会得到一个布尔类型的值,同样是true(91本来就大于90)
// 5. 两个true一比较,类型和值完全相等,所以就执行了score >= 90:后面的代码了
console.log("学员的成绩为:"+score+",评测等级为:"+level)
switch-case多用于定值之间的使用,像这种定区间问题,一般用if-else-if比较方便一点,下面,我就演示一下这题用switch-case的定值的做法:
var score = prompt("请输入学员的考试成绩评测"); //成绩
var level; //评测等级
switch(parseInt(score / 10)){
// 1. 这里的score/10是为了获取到score的十位数上的值
// 2. 然后用parseInt()函数去掉小数得到一个整数。
// 3. 这样一来,我们就把一个区间的值给定下来了。
// 4. 例如:在>=90这个区间,我输入99,根据score/10得到9.9,
// 5. 然后parseInt()再把小数去掉,就得到9了,
// 6. 也就是说,不过我输入九十几,最终只能得到9,对应的也就是level = "A"这段代码得到了执行。
case 9:
level = "A";
break;
case 8:
level = "B";
break;
case 7:
level = "C";
break;
case 6:
level = "D";
break;
case 5:
level = "E";
break;
case 4:
level = "E";
break;
case 3:
level = "E";
break;
case 2:
level = "E";
break;
case 1:
level = "E";
break;
case 0:
level = "E";
break;
default:
level = "A";
break;
}
console.log("学员的成绩为:"+score+",评测等级为:"+level)