过多的else if 会使代码臃肿而简陋,下面是优化方案总结
一、多个else if分支优化
1.Key-value的方式,通过操作相关联的键值
优化前:
if ((A = 10)) {
rule.id = "a";
} else if ((B = 100)) {
rule.id = "b";
} else {
rule.id = "c";
}
优化后:
let player = {
A: "a",
B: "b",
无: "c",
};
player[A] ? player[B] : player["无"];
2.new Map替代if else
let key = "B"; //条件
let player = new Map([
["A", "a"],
["B", "b"],
["无", "c"],
]);
let action = player.get(key) || player.get("无");
console.log(action);//b
// const actions = new Map([
// ['guest_1', () => { functionA }],
// ['guest_2', () => { functionB }],
// ['guest_3', () => { functionC }],
// ['guest_4', () => { functionA }],
// ['default', () => { functionC }],
// ])
// console.log(actions);
二、单个if多条件优化
优化前:
function test(type) {
if (type === 'jpg' || type === 'png' || type === 'gif' || type === 'svg') {
console.log("该文件为图片");
}
}
优化后:
function test(type) {
const imgArr = ['jpg', 'png', 'gif', 'svg']
if (imgArr.includes(type)) {
console.log("该文件为图片")
}
}
三、if/else语句优化
排非策略
优化前:
if (user && password) {
// 逻辑处理
} else {
throw('用户名和密码不能为空!')
}
优化后:
if (!user || !password) return throw('用户名和密码不能为空!')
三元运算符
优化前:
let allow = null
if(id>=10 ){
allow = '通过';
} else {
allow = '拒绝';
}
// 优化后
let allow = id>=10 ? '通过' : '拒绝'
四、单个if语句优化
优化前:
if (a) {
this.handleFn()
}
优化后
flag && this.handleFn()
网友评论