
本文解析初学者常见逻辑错误——误用 `||`(或)代替 `&&`(与)导致条件判断失效,并以计算小费为例,说明如何正确表达“介于区间内”的条件逻辑。
在 JavaScript 中,条件判断的准确性高度依赖逻辑运算符的语义理解。你提供的代码本意是:仅当账单金额在 50 到 300(含)之间时,按 15% 计算小费;否则按 20% 计算。但实际逻辑却写成了:
if (bill >= 50 || bill <= 300) { ... }这个条件永远为真——原因在于逻辑或(||)的短路特性:
- 任意数字都必然满足 >= 50 或 。
- 例如 555:555 >= 50 为 true → 整个条件为 true,进入 15% 分支;
- 再如 10:10
- 甚至 NaN 或 undefined 在宽松比较下也可能意外触发(虽此处不涉及,但需警惕)。
✅ 正确写法应使用逻辑与(&&),表示“同时满足两个边界条件”:
const calcTip = bill => {
if (bill >= 50 && bill <= 300) {
return bill * 0.15;
} else {
return bill * 0.20;
}
};
const bills = [125, 555, 44];
const tips = bills.map(calcTip); // 更简洁:直接映射整个数组
console.log(tips); // [18.75, 111, 8.8] → 555 和 44 均按 20% 计算 → [18.75, 111, 8.8]? 关键提醒:
立即学习“Java免费学习笔记(深入)”;
- a >= min && a
- || 适用于“满足任一条件即可”的场景(如 type === 'cash' || type === 'card');
- 可借助 console.log(bill, bill >= 50, bill = 50 || bill
- 进阶建议:添加输入校验(如 typeof bill === 'number' && !isNaN(bill)),提升函数鲁棒性。
掌握 && 与 || 的语义差异,是写出可靠条件逻辑的第一步——看似微小的符号之差,往往决定程序行为是否符合业务预期。










