if else 和 switch 个别开发中都是基于判断条件的数量来决定的,数量越多大家就越偏向于 switch 而不是 if else,switch 的实现采取了 branch table 索引的,而且 switch 语句比拟时应用的是
全等操作符
,不会产生类型转换的损耗。
如何优化 if:最大概率呈现到最小概率呈现顺次排列;缩小判断的次数,应用嵌套语句。
在我的项目中,优化条件语句的最好方法还是防止应用 if-else 和 switch 语句,而是通过数组或者对象来查问,也就是查找表(lookup Tables)。
以下是将要优化的代码片段:
getTextColor(item){switch (item.couponType) {
// 运费绿
case 'SHIPPING_FREE':
return '#00836D';
break;
// 直降红
case 'DEDUCTION':
return '#FE0000';
break;
// 满减 折扣 橘
case 'DEDUCTION_ON':
case 'DISCOUNT':
return '#FB6C0E';
break;
default:
break;
}
}
能够优化成查找表的形式:
getTextColor(item){
return {
'SHIPPING_FREE': '#00836D',// 运费绿
'DEDUCTION': '#FE0000',// 直降红
'DEDUCTION_ON': '#FB6C0E',// 满减 折扣 橘
'DISCOUNT': '#FB6C0E',
}[item.couponType]
},
为了映射表能够屡次应用,能够应用闭包:
const textColor = (() => {
const table = {
"SHIPPING_FREE": "#00836D",
"DEDUCTION": "#FE0000",
"DEDUCTION_ON": "#FB6C0E"
};
return key => table[key];
})();
console.log(statusText("SHIPPING_FREE"));