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