在日常开发工作中,只要是写业务就离不开条件判断,if、else、else if很常见,工作中看到项目中有一连串的逻辑判断,显然有优化空间的。
需求
写一个returnWeekDay方法,返回今天是星期几
入门
当我们拿到需求,看到设计逻辑判断,首先想到if
语句了
function returnWeekDay() {
var date = new Date().getDay();
if (date == 0) {
return '星期日'
}else if (date == 1) {
return '星期一'
} else if (date == 2) {
return '星期二'
} else if (date == 3) {
return '星期三'
} else if (date == 4) {
return '星期四'
} else if (date == 5) {
return '星期五'
} else if (date == 6) {
return '星期六'
}
}
复制代码
当我们写完,直观感受到有太多的if else
代码块了,看着就不舒服。 除了if
语句,我们最容易想到的可能就是switch
语句,我们用switch
来实现一下。
function getWeek() {
var date = new Date().getDay();
switch(date){
case 0:return '星期日';
break;
case 1:return '星期一';
break;
case 2:return '星期二';
break;
case 3:return '星期三';
break;
case 4:return '星期四';
break;
case 5:return '星期五';
break;
case 6:return '星期六';
break;
}
}
复制代码
这里的结构比if
语句清晰多了
中级
我们看到case
都是数字,可以考虑用数组进行优化
function getWeek() {
var date = new Date().getDay();
var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];
return arr[date];
}
复制代码
如果case
返回的是没有规律的字符串,考虑用对象进行优化
function getWeek() {
var date = new Date().getDay();
var obj =
{
0:'星期日',
1:'星期一',
2:'星期二',
3:'星期三',
4:'星期四',
5:'星期五',
6:'星期六',
};
return obj[date];
}
复制代码
其他常见优化手段
三元运算符
let aa = 10;
let flag = aa>100?true:false;
适合简单的if else逻辑判断
复制代码
逻辑&&运算符
有时候使用逻辑与运算符简化代码
flag&&sonmeMethod()
复制代码
使用include处理多重条件
有时候有这样的代码
if(code=='200'||code=='201'||code=='202'){
someMethod();
}
可以改写成
if(['200','201','202'].include(code)){
someMthod();
}
复制代码