你可以从别人那里汲取某些思想,但必须用你自己的方式加|

makalo

园龄:5年11个月粉丝:146关注:15

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 中国大陆许可协议进行许可。

posted @   makalo  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2022-05-19 k8s如何删除处于terminating状态的ns资源
2020-05-19 win10 激活
2020-05-19 window10 将程序的快捷方式加到右键"发送到"
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起