if else/switch case/对象+自执行 关于条件判断的多种写法

6 篇文章 0 订阅
3 篇文章 0 订阅
第一种 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必不可少一样

还有其他的写法 方法挺多的 慢慢写吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值