1.代码优化 --- if多分支
实习过程有一个bug让我处理,我使用if多分支处理的,功能实现了,但是看着代码很臃肿,感觉我写的就是个屎山,当时大概思路是这样的(有简化)。
function fn(a){
if(a === 'A'){
return 'aa'
}
else if(a === 'B'){
return 'bb'
}
else if(c === 'C'){
return 'cc'
}
else if(d == 'D'){
return 'dd'
}
else{
return 'ee'
}
}
console.log(fn('A'))
如果后续还要添加判断就要不断的添加else if分支,很麻烦。
优化后:
情况一:不同分支里的操作相同,只有参数不同
let map = {
'A': 'aa',
'B': 'bb',
'C': 'cc',
'd': 'dd',
'other': 'ee'
}
function fn(a){
if(map[a]){
return map[a]
}
return map['other']
}
console.log(fn('B'));
如果后续还要添加判断可以在对象map中添加属性,更方便。
情况二:不同分支里的操作不同。
let map = {
'A': function () { console.log('操作一'); },
'B': function () { console.log('操作二'); },
'C': function () { console.log('操作三'); },
'd': function () { console.log('操作四'); },
'other': function () { console.log('操作五'); },
}
function fn(a) {
if (map[a]) {
map[a]()
return
}
map['other']()
return
}
fn('B') // 操作二
如果后续还要添加判断可以在对象map中添加属性和对应的方法,比较清晰。
代码优化 --- 单if分支
今天看第二个项目的代码,有一个句代码简写是我没想到的。
(判断一) && 执行语句
太优秀了,理解起来并不难,就是简单的利用 && 逻辑判断的短路现象。如果(判断一)的返回值为false,那么就不执行后面的语句,反之,则执行判断语句。
代码等价于:if(判断一) 执行语句
其实没有简单很多,但是让人眼前一亮,条件判断不用if语句用&&,别出心裁,独具匠心。