JavaScript语言中的条件语句,除了if
语句,还有switch
语句。switch
经常使用于根据不一样的条件执行不一样的操做。虽然它和 if
语句都是用来判断条件的语句,可是它们之间仍是有不一样。html
语法以下所示:express
switch(expression) { case 变量x: // 语句1代码块 case 变量y: // 语句2代码块 case 变量z: // 语句3代码块 break; default: // 代码块 }
语法解释:表达式值计算一次,而后咱们依次将表达式的值与每一种 case
状况的值进行比较,若是匹配,就会执行与 case
对应的相关代码块。小程序
执行原理:变量 expression
的值与 case
的值进行比较,好比变量 expression
等于 case
变量 x
,咱们就执行语句1的代码块,若是变量 expression
等于 case
变量 y 就执行语句2的代码块,依次类推,若是都不符合就执行 default 语句代码块。break
语言用于结束当前执行的语句,default
表示默认的,在没有符合选项的时候默认选择。浏览器
使用 switch
语句来看判断今天是星期几,并输出对应时间。例如在一个 HTML 文件中,写入下列代码:code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>JS_侠课岛(9xkd.com)</title> </head> <body> <div> <p id="date"></p> </div> <script> var day; var d = new Date().getDay(); switch(d) { case 0: day = "星期天"; break; case 1: day = "星期一"; break; case 2: day = "星期二"; break; case 3: day = "星期三"; break; case 4: day = "星期四"; break; case 5: day = "星期五"; break; case 6: day = "星期六"; break; case 7: day = "星期天"; break; } document.getElementById("date").innerHTML = day; </script> </body> </html>
在浏览器中打开这个HTML文件,页面会显示:htm
星期二
咱们来分析一下 <script>
标签中的 JavaScript 代码,变量 d 是咱们获取到的当天的星期天数(我写这个文章的时候是星期二),getDay()
方法会返回与星期相对应的数字,例如星期一返回一、星期二返回2,以此类推。ip
而后咱们将这个变量 d 做为switch
语句的表达式值,将它与 case
后面的值匹配,若是表达式等于某个 case
后面的值,则执行响应的代码。例如上述代码中,变量 d
的值为2,那么就会匹配到 case 2
,所对应的代码就是day = "星期二";
,因此输出结果为星期二。后面还有一个break
语句,这个语句的做用就是跳出 switch
语句,避免同时执行多个case
。utf-8
default
关键词规定 case
匹配不存在时所作的事情。get
例如咱们看下面这段代码:string
var level = "P"; switch(level){ case "A": console.log("第一类"); break; case "B": console.log("第二类"); break; case "C": console.log("第三类"); break; case "D": console.log("第四类"); break; default: console.log("其余"); }
输出:
其余
上述代码中,若是 level
的值不知足任何 case
的值,则会匹配到 default
。代码中 level
的值为 P
,而 case
语句中的值只有A、B、C、D
,此时就会匹配到 default
语句,执行 default
语句下面的代码。
break
关键词用于跳出 switch
代码块。使用 break
可以节省大量执行时间,由于它会忽略 switch
代码块中的其余代码的执行。
关于条件分支 switch
和 if
二者之间的区别和关联,咱们能够经过下面这个表格进行简单直观的认识:
switch | if | |
---|---|---|
判断条件 | 等值判断 | 等值判断和区间判断 |
结束语句 | break跳出 | 执行一个if后自动结束 |
默认和不然语句 | default能够放在任何位置 | else只能放在最后 |
if
语句表达式的结果是 boolean 布尔类型,经常使用于区间判断。switch
表达式类型不能是 boolean 布尔类型,多是 byte、int、char、string、枚举,经常使用于等值判断。注意通常能用 switch
语句实现的就必定能使用 if
语句来实现,可是反过来倒是不必定的,若是区间范围就采用 if
,若是等值判断就使用 switch
。
效率问题:
switch case
会生成一个跳转表来指示实际的 case
分支地址。switch case
只能处理 case
为常量的状况。if else
须要遍历条件分支知道命中条件。if else
能应用于更多的场所,比较灵活,可是必须遍历全部可能的值。