JavaScript带if语句的函数如何实现仅单个return返回
JS简易计算器单return简化方案
核心实现规则
- 完全复用原有已验证正常的计算逻辑,不做全量代码重写
- 将原有分散的分支判断、校验逻辑全部收敛到return后的单条表达式中,函数体仅保留一行return语句
- 不改变原有输入输出规则,改造后运行效果和原函数完全一致
推荐实现(对象映射法)
用操作符作为对象键,对应计算结果作为值,直接返回匹配操作符对应的运算结果,改造成本最低,可读性优于嵌套三元写法:
// 改造完成后函数体仅保留一行return,原有计算逻辑完全平移保留 function calculate(num1, operator, num2) { return { '+': num1 + num2, '-': num1 - num2, '*': num1 * num2, '/': num2 !== 0 ? num1 / num2 : '错误:除数不能为0' }[operator] }
如果你的原有逻辑包含输入类型校验、其他自定义运算规则,直接把对应判断逻辑写在对象对应键的value位置即可,不需要拆分额外执行语句。
备选实现(嵌套三元表达式)
如果分支判断数量较少,也可以直接用嵌套三元表达式写在return后:
function calculate(num1, operator, num2) { return operator === '+' ? num1 + num2 : operator === '-' ? num1 - num2 : operator === '*' ? num1 * num2 : num2 !== 0 ? num1 / num2 : '错误:除数不能为0' }
两种写法都不需要改动已经跑通的核心计算规则,只需要把原来if/switch语句里的分支逻辑平移到表达式中即可,改造完成后可以直接运行。
内容的提问来源于stack exchange,提问作者Kristyna Sodomkova
相关产品推荐
相关产品推荐

