[size=x-large][b]switch语句:多分支语句[/b][/size]
[size=large][b]1.switch语句[/b][/size]是用来选择要执行的多个代码块之一(类似if...else if...[u]else if... [/u](n个)...else),见6举例

[size=large][b]2.语法:[/b] [/size]

switch(表达式n)
		{
			case 值1:语句体1;break;
			case 值2:语句体2;break;
			case 值3:语句体3;break;
			...
			default:语句体n;
		}



[size=large][b]3.说明:[/b] [/size]


[list]


[*]switch、case必不可少


[*]break、default为可选项


[/list][size=large][b]4.表达式n:[/b] [/size]


[*]通常为一个变量(建议为number或者string类型)


[*]表达式类型应该与case后面的值的类型相同,因为在匹配比较时,switch使用的是“===”(全等于)判断类型,例子如下:


<script>
		// 比较a、b都输入数字1后的结果
		var a=prompt("key the number of 1 or 2");//a为string型
		var b=prompt("key the number of 1 or 2")*1;//“*1”后输入的数b转变为number类型
			switch(a)
			{
				case 1:x="长城";break;
				//case后的值是个数值number类型,而a为string型
				//达不到全等于“===”条件,所以不匹配长城,而选择了跳转到default后面的语句
				case 2:x="故宫";break;
				default:x="颐和园";
			}
			console.debug("x:"+x)//控制台结果:x:颐和园
			switch(b)
			{
				case 1:y="长城";break;
				// 因b已转化为number类型,与case 1 匹配,执行了“长城”这条语句体
				case 2:y="故宫";break;
				default:y="颐和园";
			}
			console.debug("y:"+y)//控制台结果:y:长城
	</script>

控制台输出结果:


[img]http://dl2.iteye.com/upload/attachment/0117/7298/0bc6b01f-f14c-3ffe-a53b-3e3eca6fc3f6.png[/img] 

[size=large][b]5.执行过程:[/b] [/size] 

[list]



[*]计算表达式n结果,将表达式的值依次与case后面的值做比较,如果匹配,则执行该case后面的语句体;如果该语句体后面有break则执行完该语句体后跳出switch,如无break则无需判断直接进入下一个case分支或default语句,见下面举例


[*]如果所有case后面的值都与表达式n值不匹配,则执行default后面的语句体,如果没有default,则该switch语句什么都没做就结束


[/list][size=large][b]6.举例[/b][/size]


<script type="text/javascript">
		//输入一个月份,输出该月份有多少天,不考虑闰年
		// 使用if
		var month=prompt("请输入一个月份")*1;
		if (month==1 || month==3 || month==5 || month==7
			|| month==8 || month==10 || month==12){
			console.debug("if 语句:"+month+"月有31天。");
		}
		else if (month==4 || month==6 || month==9 || month==11){
			console.debug("if 语句:"+month+"月有30天。");
		}
		else if (month==2){
			console.debug("if 语句:"+month+"月有28天。");
		}
		else{
			console.debug("你输入的月份不正确!");
		}

		// 使用switch
		switch(month){
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				console.debug("switch 语句:"+month+"月有31天。");
				break;
			// 根据具体题目,利用break,简化书写
			// 当输入的月份与1符合时,因没有break,仍会跳到后面的case再与后面的值比较,直到12月份输出12月份后面的结果,再通过break跳出switch
			// 当所有出现31天的情况都走过仍没有时进入下面case 2的比较
			case 2:
				console.debug("switch 语句:"+month+"月有28天。");
				break;
			case 4:
			case 6:
			case 9:
			case 11:
				console.debug("switch 语句:"+month+"月有30天。");
				break;
			default:
				console.debug("你输入的月份不正确!");
		}
	</script>

输入4之后,控制输出结果:


[img]http://dl2.iteye.com/upload/attachment/0117/7300/214999df-f5d9-3571-ac5c-ce07b6df76d7.png[/img]