小程序中switch case如何优化

小程序中switch case如何优化最近在开发小程序,代码中需要实现很多业务,难以避免就有很多的判断,根据不同策略运行不同函数的情况存在。获取到字符串,执行对应的函数。 无奈、小程序中,偏偏不支持一个邪恶的函数 eval,但是说来eval is evil也不无道理。效率既不好又不安全,果断放弃了。 如果是简单的字…

遇见的问题

最近在开发小程序,代码中需要实现很多业务,难以避免就有很多的判断,根据不同策略运行不同函数的情况存在。获取到字符串,执行对应的函数。

在PHP中,你可以这样子方便的执行

$con = 'hello';
$con(); // hello()

$con = 'king';
$con(); // king()

无奈、小程序中,偏偏不支持一个邪恶的函数 eval,但是说来eval is evil也不无道理。效率既不好又不安全,果断放弃了。

怎么办呢

一、 If Else
if(con) {
    // do something
}else if(con){
    // do something
}
......
else{
    // do something
}

过多的if else也不好看

二、 switch case

换做switch case会好点,但还是无限的复制代码,很难受:

switch(mf.queue[key]) {
     case 'login':
       // do something
        break;
     case 'chat':
     	// do something
        break;
    ......
     default:
        // do something
	} 

如果是简单的字符串转化,也可以考虑使用枚举等。

解决方法

// 业务逻辑
const funA = function(arg){
    // do something
}
const funB = function(arg){
    // do something
}
    ......
    
// Map
const actions = new Map([
    ['funA',funA],
    ['funB',funB]
    ......
])
const choose = function(arg){
    var fun = 'funA'
    actions.get(fun)(arg) // funA(arg)
    actions.get('funB')(arg) // funB(arg)
}

// 暴露方法
module.exports = {
    choose:choose,
}  

总结

这样作,会比无限复制的if else 更加机制一点,也算是替代了eval这个方法,记录一下解决方案,高手多多指教。

今天的文章小程序中switch case如何优化分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14065.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注