switchcase语句踩坑
今天写了⼀个根据选择的⽣⽇⾃动选择年龄段的功能
代码如下:
$('.pSetBaseBirth').change(function(){
//选择时间⾃动计算年龄段
var nowDate = new Date().getTime(),//当前毫秒数
nowyear = $('#birthYear').val(),//选择的年份
nowMonth = $('#birthMonth').val(),//选择的⽉份
nowDay = $('#birthDay').val(),//选择的⽇期
oldDate = (new Date(nowyear+'/'+nowMonth+'/'+nowDay)).getTime(),//计算出⽣⽇的毫秒数
age = (nowDate-oldDate)/31557600000,//算出当前
ageSelect = $('#ageSelect');
if(age<=14){
ageSelect.val('901')
}else if(age<=19){
ageSelect.val('902')
}else if(age<=25){
ageSelect.val('903')
}else if(age<=30){
ageSelect.val('904')
}else if(age<=35){
ageSelect.val('905')
}else if(age<=40){
ageSelect.val('906')
}else if(age<=45){
ageSelect.val('907')
}else if(age<=50){
ageSelect.val('908')
}else if(age<=55){
ageSelect.val('909')
}else if(age<=60){
ageSelect.val('9010')
}else if(age<=65){
ageSelect.val('9011')
}else if(age<=70){
ageSelect.val('9012')
}else if(age<=75){
ageSelect.val('9013')
}else if(age<=80){
ageSelect.val('9014')
}else if(age<=85){
ageSelect.val('9015')
}else if(age<=90){
ageSelect.val('9016')
}else if(age<=95){
ageSelect.val('9017')
}else if(age<=100){
ageSelect.val('9018')
};
});
在写判断的时候,我尝试⽤switch case语句来写,这样可以少些很多if()语句,并且⽅便阅读,代码也美观如下:
switch(age)
{
case age<14:ageSelect.val('901');
break;
case age<19:ageSelect.val('902');
break;
case age<25:ageSelect.val('903');
break;
......
default:....
}
当测试的时候发现不管age的值是多少,只⾛default的⽅法,说明其他的判断结果都是false,然后就开始翻⽂档,各种百度,发现⼏乎所有的switch例⼦都是这样写的:
switch(n){
case 1:...;
case 2:...;
。。。
}
修改代码测试发现
switch(age)
{
case 14:ageSelect.val('901');
break;
case 15:ageSelect.val('902');
break;
case 16:ageSelect.val('903');
break;
.
switch语句表示范围
.....
default:....
}
这样就运⾏正确,得出结论,case判断是只能是判断⼀个具体的值,不能判断⼀个范围,所以还是改回了书写⿇烦的if()语句
switch语句虽然书写⽅便直观,但是不灵活,本⽂到此结束。