-
数量较少的判断可以直接使用
if...else...- 优点:写起来很快
- 缺点:如果处理大量的逻辑判断,后面的人看起来很痛苦
-
对于数量较多的、简单的判断可以使用
switch或者映射表- 优点:清晰明了
- 缺点:只能处理简单逻辑
// 对于多个值都使用一个逻辑的判断,使用switch
switch (name) {
case 'a':
case 'b': {
console.log('a, b')
break
}
case 'c': {
console.log('c')
break
}
default: console.log('default')
}
// 对于一对一关系的可以使用映射
const demoMap = {
a: (name) => {
console.log('a')
},
b: (name) => {
console.log('b')
},
c: (name) => {
console.log('c')
},
}
demoMap[testName]()
-
对于数量较多、判断较为复杂的可以使用列表并配合
find或者filter- 优点:清晰明了,而且能够通过复杂逻辑进行筛选
- 缺点: 写起来较为麻烦、因为需要遍历查找,更费性能
function conditionMapDemo () {
let demo = 0
const conditionMap = [
{
judge: (name) => name !== 'a',
execute: () => {
console.log('this is not a')
console.log(demo++)
},
},
{
judge: (name) => name !== 'b',
execute: () => {
console.log('this is not b')
console.log(demo++)
},
},
{
judge: (name) => name !== 'c',
execute: () => {
console.log('this is not c')
console.log(demo++)
},
},
]
// 只筛选单个,相当于if... else if
const executeFunction = conditionMap.find(item => item.judge(testName)).execute
executeFunction && executeFunction()
console.log(demo)
// 筛选所有,相当于if
const mulExecuteFunction = conditionMap.filter(item => item.judge(testName))
mulExecuteFunction.forEach(item => item.execute())
console.log(demo)
}