问题描述
这是我的代码笔的链接。 https://codepen.io/julius-88/pen/poRNRrN?editors=1010
let bill = 430;
const tip = bill * 0.15;
const tip2 = bill * 0.2;
const finalBill = bill + tip;
const finalBill2 = bill + tip2;
tip >= 50 <= 300 ? console.log(`The bill was ${bill},the tip was ${tip},and the total value is ${finalBill}`) : console.log(`The bill was ${bill},the tip was ${tip2},and the total value is ${finalBill2}`);
我的问题是返回值。我已经单独检查了我的所有常量,它们都是正确的。但是当最终结果显示时,它显示了错误的数字。
在我的代码笔的示例中,小费假设是 86,但它说它是 64.5。我不知道为什么它减少了数量,我正在疯狂地试图弄清楚。
有人知道为什么吗?
解决方法
您的 JavaScript 中存在语法错误:
tip >= 50 <= 300
JavaScript 中具有相似优先级的运算符将从左到右解释。因此,这将首先确定 tip
是否大于或等于 50,并返回布尔值 true
或 false
。它会然后查看 true
或 false
是否小于或等于 300。
JavaScript 会在运算符不匹配时隐式转换类型,因此当在布尔值上使用不等运算符时,它将被转换为:
-
true
= 1 -
false
= 0
在任何一种情况下,true
(1) false (0) tip 的值是多少,您的条件都将始终返回 true。>
我想你的意思是:
tip >= 50 && tip <= 300 ? ...
由于运算符的优先级,不等式将首先处理(有点像说 2 * 3 + 4 * 5
,乘法将在加法之前处理)。然后它将使用 &&
来检查两个不等式是否为真。