返回答案错误

问题描述

这是我的代码笔的链接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,并返回布尔值 truefalse。它会然后查看 truefalse 是否小于或等于 300。

JavaScript 会在运算符不匹配时隐式转换类型,因此当在布尔值上使用不等运算符时,它将被转换为:

  • true = 1
  • false = 0

在任何一种情况下,true (1) false (0) tip 的值是多少,您的条件都将始终返回 true。>

我想你的意思是:

tip >= 50 && tip <= 300 ? ...

由于运算符的优先级,不等式将首先处理(有点像说 2 * 3 + 4 * 5,乘法将在加法之前处理)。然后它将使用 && 来检查两个不等式是否为真。