为了账号安全,请及时绑定邮箱和手机立即绑定

如何优雅解决js很多if条件的情况?

如何优雅解决js很多if条件的情况?

萧十郎 2019-05-09 21:57:15
问题描述案例:有这么一个表单的input框.既要求输入的数据不能大于10不能小于1.又要求和上一次输入的值相差不能超过5.还有各种xxx条件.依照我个人习惯,会写很多的ifreturn.(因为有return所以我就没使用&&顺便在这请教一下各位&&逻辑运算符后怎么接return?)问题出现的环境背景及自己尝试过哪些方法对于第一个问题个人习惯是:写多个ifreturn但感觉不优雅想请教大神们的习惯写法.第二个问题逻辑运算符&&后面为什么不能跟return.如何解决?相关代码第一个问题:handleSubmit=(value)=>{if(value10){console.error("xxx");return;}if(value-oldValue>5){console.error("xxx");return;}//xxxxconsole.log("success!");}第二个问题:handleSubmit=()=>{value==1&&return;//报错}谢谢!
查看完整描述

2 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

这种问题我见过很多了哦~我的观点还是,只要代码能够正确无误的运行,就可以了,不必追求“优雅”这个比较玄学的概念,通常我们所指的优雅,是不会在业务代码里面纠结的。
当然了,if-else如果很长,那可读性必然会下降,我给你提两个建议:
善用策略模式
业务抽象多利用fp中的map、filter等操作
做好这两点,if-else基本就会少很多了,如果项目复杂度很高的话,还可以引入一些简单的Monad来抽离if-else逻辑,比如常见的Maybe、Either等。
关于第二点问题,首先你要分清楚,表达式和语句的区别,return是语句而非表达式,因此无法和&&操作符一起使用。
                            
查看完整回答
反对 回复 2019-05-09
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

输入的数据过滤建议使用正则,第二个可以用一个中间变量赋值。最后再return
handleSubmit=()=>{
vartemp;
value==1&&temp='你需要的值';
returntemp
}
                            
查看完整回答
反对 回复 2019-05-09
  • 2 回答
  • 0 关注
  • 338 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信