在JavaScript中,选择结构共有2种方式: if语句和switch语句。上一节介绍了if语句,这一节我们再来给大家介绍一下switch语句。
语法:
switch(判断值)
{
case 取值1:
语块1;break;
case 取值2:
语块2;break;
……
case 取值n:
语块n;break;
default:
语句块n+1;
}
说明:
从英文意思角度来看,switch是“开关”,case是“情况”,break是“断开”,default是“默认”。小伙伴们根据英文意思来理解就很容易了。
switch语句会根据“判断值”来判断,然后来选择使用哪一个case。如果每一个case的取值都不符合,那就执行default的语句。
举例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var day = 3;
var week;
switch (day)
{
case 1:
week = "星期一"; break;
case 2:
week = "星期二"; break;
case 3:
week = "星期三"; break;
case 4:
week = "星期四"; break;
case 5:
week = "星期五"; break;
case 6:
week = "星期六"; break;
default:
week = "星期日";
}
document.write("今天是" + week); //输出今天是星期几
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
在switch语句中,系统会从第1个case开始判断,直到找到满足条件的case就会退出,然后后面的case就不会执行了。
对于switch和case,大家都知道是怎么一回事,却不太理解break和default有什么用。下面我们通过两个例子来理解一下。
举例:break语句
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var day = 5;
var week;
switch (day)
{
case 1:
week = "星期一";
case 2:
week = "星期二";
case 3:
week = "星期三";
case 4:
week = "星期四";
case 5:
week = "星期五";
case 6:
week = "星期六";
default:
week = "星期日";
}
document.write(week); //输出今天是星期几
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
day的值为5,为啥最终输出的是“星期日”呢?其实,这就是缺少break语句的结果。
实际上,在switch语句中,首先会判断case的值是否符合day的值。因为day的值为5,因此会执行“case 5”这一分支。但是,由于没有在“case 5”后面加break语句,因此程序还会把后面的“case 6”以及“default”都执行了,后面week的值会覆盖前面week的值,因此最终输出的是“星期日”。
break语句用于结束switch语句,从而使JavaScript仅仅执行对应的一个分支。如果没有了break语句,则该switch语句中“对应的分支”被执行后还会继续执行后面的分支。因此,对于switch语句,一定要在每一个case语句后面加上break语句。一定记住!
举例:default语句
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
var n = 10;
switch (n)
{
case 1:
document.write("你选择的数字是:1"); break;
case 2:
document.write("你选择的数字是:2"); break;
case 3:
document.write("你选择的数字是:3"); break;
case 4:
document.write("你选择的数字是:4"); break;
case 5:
document.write("你选择的数字是:5"); break;
default:
document.write("你选择的数字不在1~5之间");
}
</script>
</head>
<body>
</body>
</html>
浏览器预览效果如图所示。
分析:
在这个例子中,我们使用default来定义默认情况,因此无论n的值是10、12还是100,最终执行的也是default这一个分支。
此外,case后面的取值不仅仅是数字,也可以是字符串等。switch语句在实际开发中是非常重要的,建议大家认真掌握。