如何正确简写JS/TS的if else语句,解决简写后函数总返回true的问题
if else 条件判断简写方案
错误原因
你编写的简写版本始终返回true的核心问题是丢失了原if分支中的return逻辑:原代码中触发对应if条件时,会直接将工具函数的返回值作为整个isPathPointAvailable函数的结果返回;而你的写法只是执行了工具函数,没有将其返回值向外传递,最终函数会固定走到最后一行返回true。
正确简写写法
可以直接用嵌套三目运算符+可选链语法实现完全等价的简写,无需冗余的if判断,甚至可以省略函数大括号和显式return:
const isPathPointAvailable = (requiredItems?: ModelTypes['Item'][], oneOfItems?: ModelTypes['Item'][]) => requiredItems?.length ? userHaveMultipleRequiredItems(requiredItems) : oneOfItems?.length ? userHaveRequiredItem(oneOfItems) : true;
逻辑说明
该写法和原函数逻辑100%对齐:
- 首先通过
requiredItems?.length判断必填项数组存在且不为空,满足条件则直接返回userHaveMultipleRequiredItems的执行结果 - 上一条件不满足时,判断可选项数组
oneOfItems存在且不为空,满足条件则返回userHaveRequiredItem的执行结果 - 两个条件都不满足时直接返回
true
内容的提问来源于stack exchange,提问作者Dawid Szemborowski
相关产品推荐
相关产品推荐

