switch语法
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
工作原理
首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。
switch 中 case的判断是===的判断,即数据类型和值的双重判断。
case值还可以表示一个范围,类型switch的判断条件的类型要和case值相同
另外switch的判断条件可以是String 、Number、Boolean、char、枚举、null、undefined
经典小案例年月日
// 要求用户通过 弹窗 输入 年,月,日,判断该日是这一年的第多少天?
var year = parseInt(prompt('请输入年份:'));
var month = parseInt(prompt('请输入月份:'));
//判断月份是否超出正常月份
if(month > 0 && month < 13){
var day = parseInt(prompt('请输入日:'));
//判断每月天数是否超出正常天数
switch (month) {
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
if(day > 0 && day <= 31){
function_name (year,month,day);
}else {
console.log('对不起,天数不对');
}
break;
case 4 :
case 6 :
case 9 :
case 11 :
if(day > 0 && day <= 30){
function_name (year,month,day);
}else {
console.log('对不起,天数不对');
}
break;
case 2 :
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
if(day > 0 && day <= 29){
function_name (year,month,day);
}else {
console.log('对不起,天数不对');
}
}else {
if(day > 0 && day <= 28){
function_name (year,month,day);
}else {
console.log('对不起,天数不对');
}
}
break;
}
function function_name (year,month,day) {
// console.time('aaa');
var sum = 0;
//累加求和
switch (month) {
case 12 : sum += 30;
case 11 : sum += 31;
case 10 : sum += 30;
case 9 : sum += 31;
case 8 : sum += 31;
case 7 : sum += 30;
case 6 : sum += 31;
case 5 : sum += 30;
case 4 : sum += 31;
case 3 :
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
sum += 29;
}else {
sum += 28;
}
case 2 : sum += 31;
default:
sum += day;
}
document.write(year+'年'+month+'月'+day+'日,是'+year+'年的第'+sum+'天');
// console.timeEnd('aaa');
}
}else {
console.log('对不起,您输入是月份不对无法计算')
}