switch 语句的基本语法如下:
switch (表达式){
case 表达式1:
语句块1;
break;
case表达式2:
语句块2;
break;
case表达式n:
语句块n;
break;
default:
语句块n+1;
}
switch 后面的“表达式”可以是任意的具有某个值的表达式。case 关键字后面的值也可以是任意的表达式,实际中最常用的是某个类型的直接量。
switch 语句的执行流程是这样的:首先计算 switch 关键字后面的表达式,然后按照从上到下的顺序计算每个 case 后的表达式并和 switch 表达式的值进行比较。
当 switch 表达式的值与某个 case 表达式的值相等时,就执行此 case 后的语句块;如果 switch 表达式的值与所有 case 表达式的值都不相等,则执行语句中的“default:”的语句块;如果没有“default:”标签,则跳过整个 switch 语句。
另外,break 语句用于结束 switch 语句,从而使 JavaScript 只执行匹配的分支。如果没有 break 语句,则该 switch 语句的所有分支都将被执行,switch 语句也就失去了使用的意义。
需要注意的是:对每个 case 的匹配操作是 “===”严格相等运算符比较操作,即两个表达式的值必须同时满足值和类型都相等才算相等。
下面使用 switch 语句修改“JS if else语句”一节中的例 5,代码如下所示。
【例 1】switch 语句的使用。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>switch语句的使用</title> <script> window.onload = function (){ var oText = document.getElementById('text1'); var oBtn = document.getElementById('btn1'); oBtn.onclick = function (){ var score = oText.value; //获取文本框中输入的成绩 switch(Math.floor(score/10)){ //除法操作使score字符串隐式转换为数字 case 6: alert("成绩及格!"); break; case 7: alert("成绩中等!"); break; case 8: alert("成绩良好!"); break; case 9: case 10: alert("成绩优秀!"); break; default: alert("成绩不理想!"); } }; }; </script> </head> <body> <body> 请输入成绩:<input type="text" id="text1"/> <input type="button" id="btn1" value="提交"/> </body> </html>
上述代码中的 floor(value) 方法是 Math 内置对象的一个方法,功能是返回一个小于等于参数 value 的最小整数,例如 Math.floor(89/10)=Math.floor(8.9)=8。可见如果成绩是分布在 1~100,则使用 floor(score/10) 方法可以得到每一段成绩对应的数字分别为 1~10,再通过判断 floor(score/10) 值为哪个数字就可以知道成绩的等级了。
上述代码首先计算 switch 中的表达式 Math.floor(score/10),然后将该值按从上到下的顺序依次跟 case 后面的值比较,如果相等,则执行该 case 后面的代码并退出 switch 语句;如果跟所有的 case 后面的值比较都不相等,则执行“default:”后面的语句块。需要注意的是,case9 后面没有 break 语句,这样当 switch 表达式的值是 9 时,程序会执行完 case9 后继续执行 case10,然后跳出。
需要注意的是:例 1 只针对输入的值在 0~100 之间有效,如果超出 100,则判断结果出错。对 0~100 之间的输入值,运行结果如下图所示。
图 1:成绩输出结果
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/23954.html