一、
举个例子:计算几月几号是那一年的第几天?
有两个方案都是用的switch(知识举例子,有漏洞,请谅解)
方案一:
<script> /* * (1)先判断是几月 * (2)在判断是几号 * (3)把每月的天数确定好 * (4)再让前几个的天数相加 * */ var month = prompt("请输入月份"); var day = prompt("请输入几号"); month = Number(month); day = Number(day); var result; switch(month)//先计算某月以前月份的总天数 { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; } result=sum+day; alert(result); </script>
从这个可以看出来,这些天数都是死定好的,提前计算好的,很明显感觉不是非常好
下面还有一个例子:
方案二:
<script> var year = Number(prompt("请输入年份")); var month = prompt("请输入月份"); var day = prompt("请输入日期"); month = Number(month); day = Number(day); var num=0;switch (month-1){ case 11: num += 30; case 10:num += 31; case 9:num += 30; case 8:num += 31; case 7:num += 31; case 6:num += 30; case 5:num += 31; case 4:num += 30; case 3:num += 31; case 2: if((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0)){ num += 29; }else{ num += 28; } case 1:num += 31; } num = num +day; alert(num); </script>是不是感觉下面的更好些:下面这个用的很巧妙,先让用户输入月份,然后输入的月份在减一,这样可以得到之前月数的总天数,再到switch语句进行运算,case的值按倒叙排列,直到依次加完为止。再加上日期,结果就出来了。我们大部分人用switch语句都是配合break来进行的,而这个例子就让他自己运行完这个switch,而且case:只是一个标号,switch(key)里面的key就相当于一个要找到的门牌号,而case就是门牌号,当找到的时候就会执行里面的代码。