第一种 key
if (strType === 'aa') {
console.log('aa')
} else if (strType === 'bb') {
console.log('bb')
} else if (strType === 'cc') {
console.log('cc')
} else if (strType === 'dd') {
console.log('dd')
} else if (strType === 'ee') {
console.log('ee')
} else if (strType === 'ff') {
console.log('ff')
} else if (strType === 'gg') {
console.log('gg')))
} else if (strType === 'hh') {
console.log('hh')
} else if (strType === 'ii') {
console.log('ii')
} else if (strType === 'jj') {
console.log('jj')
} else if (strType === 'kk') {
console.log('kk')
} else if (strType === 'll') {
console.log('ll')
}
第二种 switch case
switch (strType) {
case 'aa':
console.log('aa')
break
case 'bb':
console.log('bb')
break
case 'cc':
console.log('cc')
break
case 'dd':
console.log('dd')
break
case 'ee':
console.log('ee')
break
case 'ff':
console.log('ff')
break
case 'gg':
console.log('gg')
break
case 'hh':
console.log('hh')
break
case 'ii':
console.log('ii')
break
case 'jj':
console.log('jj')
break
case 'kk':
console.log('kk')
break
case 'll':
console.log('ll')
break
default:
}
第三种 对象+自执行
({
'aa': () => console.log('aa'),
'bb': () => console.log('bb'),
'cc': () => console.log('cc'),
'dd': () => console.log('dd'),
'ee': () => console.log('ee'),
'ff': () => console.log('ff'),
'gg': () => console.log('gg'),
'hh': () => console.log('hh'),
'ii': () => console.log('ii'),
'jj': () => console.log('jj'),
'kk': () => console.log('kk'),
'll': () => console.log('ll')
}[strType])()
因为第三种写法 看起来很清爽 也很简单 所以条件一多的话我就尤其偏爱第三种 因为是自执行所以第三种的key
需要写全
以前也有用对象的key
加自执行写过判断 也遇到过一次问题 那次解决了…就忘记了
既然这次又遇到 就想着写下来了
Ps: 为什么我会写这么多种情况 第一是情况越多第三种看起来越简单 第二因为我确实遇到了这么多条件😂
遇到问题
报错
TypeError: {(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)(intermediate value)}[permissionType] is not a function
问题:
因为本地不好模拟情况 所以直接打包上版本之后才测的 对象加自执行的写法 造成相关操作无反应
原因:
对象的key
不全 自执行会造成XXX is not a function
的问题出现 因此操作无响应
解决:
看了好几次代码也没发现问题,最后索性把这个写法改成if else 发现居然可以(条件比较多的话不建议用if else) ,定位到问题之后,就用其他写法代替 或给strType
的值加一个key
去判空 总之就是自执行函数里对象的key要包括所有strType
值的情况。
总结
多组件传来传去难免会有漏掉的地方,所以不管用哪种写法,加一个判断边界,去做不包含在已有条件下的事件, 这一点是 就像是switch
中的default
必不可少一样
还有其他的写法 方法挺多的 慢慢写吧