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

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

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

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

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

这种问题我见过很多了哦~ 我的观点还是,只要代码能够正确无误的运行,就可以了,不必追求“优雅”这个比较玄学的概念,通常我们所指的优雅,是不会在业务代码里面纠结的。

当然了,if-else 如果很长,那可读性必然会下降,我给你提两个建议:

  • 善用策略模式

  • 业务抽象多利用 fp 中的 map、filter 等操作

做好这两点,if-else 基本就会少很多了,如果项目复杂度很高的话,还可以引入一些简单的 Monad 来抽离 if-else 逻辑,比如常见的 MaybeEither等。

关于第二点问题,首先你要分清楚,表达式和语句的区别,return 是语句而非表达式,因此无法和 && 操作符一起使用。


查看完整回答
反对 回复 2019-01-28
  • 1 回答
  • 0 关注
  • 484 浏览
慕课专栏
更多

添加回答

举报

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