遇见的问题

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

在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 somethingbreak;case 'chat':// do somethingbreak;......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如何优化相关推荐

  1. 小程序之switch...case...break

    猜猜这段小程序会打印出什么结果? public class Test {public static void main(String[] args) {int i = 2;decide(i);}pub ...

  2. 微信小程序--修改switch组件的大小size

    修改switch组件的大小 小程序中switch组件的大小往往和实际项目中的大小有些出入,但是发现文档中并没有修改大小的方法,但是可以根据自己的实际情况进行颜色设置. 直接上代码: <switc ...

  3. 初学前端在小程序中使用for循环的一个优化案例

    作为前端的小白,已经学习了个把月了,for循环在微信小程序中的使用在常见不过了:在获取某个官方API数据后,如何将获取的若干条数据分别不重复的放入到不同的循环当中呢?让我们看个小小的例子去体会一波. ...

  4. 小程序中所有组件学习

    视图容器 view 视图容器 属性名 类型 默认值 说明 最低版本 hover-class String none 指定按下去的样式类.当 hover-class="none" 时 ...

  5. 微信小程序中使用nfc

    在小程序中调用nfc功能,实现小程序刷卡 直接上代码: 先在小程序的根目录或是pages目录下创建一个nfc文件夹 在nfc文件中创建一个nfc.js的文件 代码: // 获取nfc实例 functi ...

  6. java break在switch_java中switch case语句需要加入break的原因解析

    java中switch case语句需要加入break的原因解析 java 中使用switch case语句需要加入break 做了具体的实例分析,及编译源码,在源码中分析应该如何使用,大家可以参考下 ...

  7. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  8. python中case的用法_python中Switch/Case实现的示例代码

    python 的 python中Switch/Case实现的示例代码 学习Python过程中,发现没有switch-case,过去写C习惯用Switch/Case语句,官方文档说通过if-elif实现 ...

  9. 记一次小程序富文本的小小优化

    背景 记一次针对线上微信电竞小程序赛事富文本资讯模块进行优化. 原有的资讯采用管理端富文本编辑保存 HTML 文本,由于小程序提供的 rich-text 组件 无法支持 video 标签等局限性,在小 ...

  10. 在微信小程序中绘制图表(part2)

    本期大纲 1.确定纵坐标的范围并绘制 2.根据真实数据绘制折线 相关阅读: 在微信小程序中绘制图表(part1) 在微信小程序中绘制图表(part3) 关注我的 github 项目 查看完整代码. 确 ...

最新文章

  1. linux rcs文件中的ip,linux学习笔记之diff和patch命令
  2. Question: Database Of Tumor Suppressors And/Or Oncogenes
  3. 织梦cms响应式影视传媒模板
  4. 渗透实例:The Game Of Bob_1.0.1
  5. 在PHP中使用协程实现多任务调度
  6. 系统学习深度学习(七)--主流深度学习开源框架对比
  7. smarty中的在模板页中应用js css img等文件时,地址是相对与模板页对应的php文件
  8. 关于登录tomcat8一直登录不进去问题
  9. 机房巡检知识点(一)
  10. ss php 搭建,sspanel 前端搭建教程
  11. 电子计算机表格,excel电子表格(计算机).ppt
  12. org.hibernate.QueryParameterException: could not locate named
  13. java定义一个eat方法_Java继承概念详细解读
  14. Ironic的安装那些事儿
  15. 数据库编程——简单教程
  16. @Value(“${}“)
  17. centos安装python3.8.1_centos6.6下安装python3.8.1后报错?
  18. Electron 学习
  19. UE4-(蓝图)第一百课 用.csv格式文件作为配置文件并获取、使用数据
  20. 领:西安交通大学MBA提前面试真题

热门文章

  1. SAP案例教程CO成本会计后台配置
  2. 股市投资必修课十九---DCF三要素经营存续期、现金创造力、经营周期定位
  3. python 经典图书排行榜_书榜 | 计算机书籍(3.30-4.5)销售排行榜
  4. Linux下rpm软件包rpm命令的安装及卸载
  5. sai笔记4-加高光/图层切换颜色
  6. 基于Spring-statemachine的有限状态机(FSM)的介绍及示例
  7. “好工作”的最关键指标:场景足够复杂、数据量足够大、杠杆率足够高
  8. 服务器硬盘开机吱吱响,开机时硬盘吱吱响的原因
  9. 20220520数据结构绿皮书读书笔记
  10. Python入门:数据结构之字典(dict)(1)