js优雅的写法1

本文探讨了如何使用JavaScript Map优化按钮点击事件处理,通过将条件判断与操作映射到Map中,实现了更简洁的代码。进一步地,针对不同角色和状态的组合,提出了使用Map和正则表达式进行角色权限判断的改进方案,提高了代码的可读性和维护性。
摘要由CSDN通过智能技术生成

js优雅的写法

点击switch case

/**
* 按钮点击事件
* @param {number} status 活动状态: 1进行中 2失败 3已结束 4已取消
*/
const onButtonClick = (status) => {
    switch(status) {
        case 1:
          sendLog('processing')
          break;
        case 2:
          sendLog('fail')
          break;
        case 3:
          sendLog('shibai')
          break;
        case 4:
          sendLog('cenceled')
          break;
        default:
          sendLog('cenceled')
          break;
    }
}

const  actions = new Map([
    [1, ['processing']],
    [2, ['fail']],
    [3, ['shibai']],
    [4, ['cenceled']],
    ['default', ['other']]
])
consg onButtonClick = (status) => {
    let action = actions[status] || actions['default']
    sendLog(action[0])
}
条件升级,角色 + 条件
/**
* 两个权限A B
* @param {string} identity 身份标识:guest客人 master管理员
* @param {number} status 状态: 1xx 2xx 3xx
*/
const onButtonClick = (status, identity) => {
    if (identity == 'guest') {
        if (status == 1) { 
            // do sth
        }else if (status == 2) {
            // do sth
        }else if (status == 3) {
            // do sth
        } else {
            // do sth
        }
    } else {
        if (status == 1) { 
            // do sth
        }else if (status == 2) {
            // do sth
        }else if (status == 3) {
            // do sth
        } else {
            // do sth
        }
    }
}
// 优化
const actions = new Map([
    ['guest_1', () => { /* do sth */ }],
    ['guest_2', () => { /* do sth */ }],
    ['guest_3', () => { /* do sth */ }],
    ['guest_0', () => { /* do sth */ }],
    ['master_1', () => { /* do sth */ }],
    ['master_2', () => { /* do sth */ }],
    ['master_3', () => { /* do sth */ }],
    ['master_0', () => { /* do sth */ }],
])
const onButtonClick = (status, identity) => {
    let action = actions.get(`${identity}_${status}`) || actions.get(`${identity}_0`)
    action.call(this)
}

// 继续优化
const actions = () => {
    const funA = () => {/* do sth */}
    const funB = () => {/* do sth */}
    const funElse = () => {/* do sth */}
    return new Map([
        [/^guest_[1-3]$/, funA],
        [/^mastet_[1-3]$/, funB],
        [/^guest_0|master_0$/, funElse],
        // [/^guest_.*$/, funElse],
    ])
}
const onButtonClick = (status, identity) => {
    let action = actions.get(`${identity}_${status}`) || actions.get(`${identity}_0`)
    action.call(this)
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好的问题!在 JavaScript 中,可以使用逻辑或运算符(“||”)将多个条件组合起来,实现多重判断的功能。同时,为了确保代码的可读性和代码风格的美观,可以使用一些技巧来编写优雅的多重判断语句。 以下是几种值得推荐的写法: 1. 使用默认值:在变量赋值时,使用逻辑或运算符“||”,将变量原值和一个默认值作为两个操作数,如果变量原值是假值(false、null、undefined、0、NaN、""),则将默认值赋给变量,否则将原值作为变量的值。这种写法可以避免使用 if 语句进行多重判断。 例如: ```javascript // 简单示例 var foo = bar || 0; // 多重判断示例 var value = option1 || option2 || option3 || defaultOption; ``` 2. 使用三元运算符:在变量赋值时,使用三元运算符(“?:”),将多重判断转换为一条语句。这种写法可以在某些情况下提高代码的可读性,尤其是只有两个选项的场合。 例如: ```javascript // 简单示例 var result = condition ? value1 : value2; // 多重判断示例 var result = option1 ? value1 : (option2 ? value2 : (option3 ? value3 : defaultValue)); ``` 3. 使用数组方法:将多个选项放在一个数组中,然后使用数组方法来进行多重判断。这种写法可以让代码更加简洁、易读。 例如: ```javascript // 简单示例 var maxNumber = Math.max.apply(null, numberArray); // 多重判断示例 var value = [option1, option2, option3].find(Boolean) || defaultValue; ``` 希望这些写法对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值