js 使用 eval 函数优化条件查询
我们在写代码的使用,经常会遇到if else 很长很长的代码,这种要怎么优化,一直是仁者见仁智者见智的
我说下我的优化方案
原始代码
例如:
if (income <= 10000) {
return income*0.365;
} else if (income <= 30000) {
return (income-10000)*0.2+35600;
} else if (income <= 60000) {
return (income-30000)*0.1+76500;
} else {
return (income-60000)*0.02+105600;
}
有这样一段代码,该怎么优化?
优化
可以使用这种方式
const strategies = {
'>60000': (income) => (income - 60000) * 0.02 + 105600,
'>30000': (income) => (income - 30000) * 0.1 + 76500,
'>10000': (income) => (income - 10000) * 0.2 + 35600,
'<=10000': (income) => income * 0.365,
};
function calculateIncomeTax(income) {
for (let key in strategies) {
// 相当于执行 5000 > key
if (eval(`${income}${key}`)) {
return strategies[key](income);
}
}
}
console.log(calculateIncomeTax(5000)); // 1825
console.log(calculateIncomeTax(15000)); // 4220
console.log(calculateIncomeTax(35000)); // 9150
console.log(calculateIncomeTax(70000)); // 1260
上面这种方式与原始的,我说不出那个好那个坏,如果只有 一两个条件无疑是原始的好,但是随着条件过多,无疑是优化后的更佳,至于符合条件后调用的函数,可以自定义 ,这里不做赘述,其实这也是策略模式的思想
关于eval函数
eval()
函数会将传入的字符串当做 JavaScript 代码进行执行。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval
本文作者:makalo
本文链接:https://www.cnblogs.com/makalochen/p/17415566.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2022-05-19 k8s如何删除处于terminating状态的ns资源
2020-05-19 win10 激活
2020-05-19 window10 将程序的快捷方式加到右键"发送到"