Wix Velo计算器开发:if-else条件重复致平均计算逻辑异常求助
问题分析与修复方案
原代码存在两个核心问题:
- 第一个
if条件preço1 === 0 || preço2 === 0 || preço3 === 0覆盖了所有包含0的场景,导致后续的else if分支永远无法执行,这就是ESLint提示分支不可达的原因。 - 第二个
else if的判断逻辑完全错误,重复的preço1 && preço2没有意义,preço2 && preço3 === 0也无法正确判断两个变量为0的情况。
修复思路
先统计三个变量中0的数量,再根据数量执行对应计算逻辑,这样逻辑清晰且不会出现条件覆盖:
修正后的代码
// 统计0的个数 const zeroCount = [preço1, preço2, preço3].filter(num => num === 0).length; const total = preço1 + preço2 + preço3; let médiaPreços; if (zeroCount === 1) { médiaPreços = total / 2; } else if (zeroCount === 2) { médiaPreços = total; // 总和除以1等价于直接取总和 } else if (zeroCount === 0) { médiaPreços = total / 3; } else { // 处理三个变量都是0的边界情况,可根据需求调整 médiaPreços = 0; }
代码说明
- 用数组
filter方法统计0的数量,比逐个判断更简洁易维护。 - 先计算总和
total,避免重复计算三次变量之和。 - 按0的数量分支处理,每个条件互斥,不会出现覆盖问题,ESLint的提示也会消失。
- 增加了三个变量都是0的边界处理,避免出现逻辑漏洞。
内容的提问来源于stack exchange,提问作者gabrieljose
相关产品推荐
相关产品推荐

