Switch是与if ... else ...相同的条件语句,不同之处在于switch语句允许根据值列表测试变量是否相等。
使用switch从要执行的许多代码块中选择一个。这是一个完美的解决方案,嵌套if…else语句。
一条switch语句如下所示:
switch (expression) { case value1: //语句执行 //表达式的结果与value1匹配 break; case value2: //语句执行 //表达式的结果与value2匹配 break; ... case valueN: //语句执行 //表达式的结果与value N匹配 break; default: //当以上任何一项都不执行时 //执行这里的代码块 }
按照上面代码块的逻辑,这是将要发生的事件的顺序:
switch表达式一次求值
将表达式的值与每种情况的值进行比较
如果匹配,则执行相关的代码块
如果所有情况都不匹配,则执行默认代码块
以下示例使用工作日编号来计算星期几:
var day; switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = "Undefined Day"; }测试看看
break与每个case标签相关联的关键字可确保一旦执行了匹配的语句,程序便会退出切换,并在切换后的语句处继续执行。如果省略break,程序将在switch语句的下一个语句处继续执行。
如果您忘记休息,那么脚本将从符合条件的情况开始运行,然后在满足条件的情况下运行情况:
var num = Number(document.querySelector("input").value); var text; switch (num) { case 1: text = "您输入的号码是 1"; case 2: text = "您输入的号码是 2"; case 3: text = "您输入的号码是 3"; case 4: text = "您输入的号码是 4"; case 5: text = "您输入的号码是 5"; default: text = "执行默认语句"; }测试看看
没有必要中断switch块中的最后一种(即default)情况。因为语句块最终在这里中断(结束)。
如果没有case匹配,则default关键字指定要运行的一些代码。
switch中只能有一个默认语句。尽管这是可选的,但建议您使用它,因为它可以处理预料之外的情况。
有时,您会希望不同的情况使用相同的代码,或者使用通用代码。
这是一个操作顺序switch语句的一个示例,其中四个不同的值执行完全相同的操作:
var num = Number(document.querySelector("input").value); var text; switch (num) { case 1: case 2: case 3: case 4: text = "你输入的数字介于两者之间 1 - 4"; break; case 5: case 6: case 7: case 8: text = "你输入的数字介于两者之间 5 - 8"; break; default: text = "执行默认语句"; }测试看看
如果多个case与值匹配,则选择第一个case。
如果找不到匹配的case,程序将继续使用默认标签。
如果未找到默认标签,则程序将继续执行切换后的语句。