简体   繁体   中英

Ternary Operator not yielding expected result

In JavaScript: I have a ternary operator being instructed to return a tip percentage of %15 if the bill amount is between $50-300, otherwise being instructed to reuturn a tip percentage of %20. On a bill amount of $275, it is still yielding %20. I have looked at many examples of functioning ternary operators and my code seems to be properly worded and yet the result comes out incorrect every time. In what way am I failing?

const bill_1 = 40;
const bill_2 = 275;
const bill_3 = 430;
let bill;
let tip_percentage = bill >= 50 && bill <= 300 ? 0.15 : 0.2;

bill = bill_1;
console.log(`The first table's bill came out to $${bill}. After the tip of ${tip_percentage}% (equalling: $${bill * tip_percentage}) was added, the final amount owed is: $${bill * tip_percentage + bill}`);

bill = bill_2;
console.log(`The second table's bill came out to $${bill}. After the tip of ${tip_percentage}% (equalling: $${bill * tip_percentage}) was added, the final amount owed is: $${bill * tip_percentage + bill}`);

bill = bill_3;
console.log(`The third table's bill came out to $${bill}. After the tip of ${tip_percentage}% (equalling: $${bill * tip_percentage}) was added, the final amount owed is: $${bill * tip_percentage + bill}`);

This is the result being given: 意想不到的结果

As @Matt said in the comment, tip_percentage is not a function and must be calculated each time you change the bill amount.

Try this:

 const bill_1 = 40; const bill_2 = 275; const bill_3 = 430; function getTip(bill) { var tip = (bill >= 50 && bill <= 300)? 0.15: 0.2; return tip; } alert(`Bill one's tip: ${getTip(bill_1)}`); alert(`Bill two's tip: ${getTip(bill_2)}`); alert(`Bill two's tip: ${getTip(bill_3)}`);

tip_percentage is already calculated.

If you want to make different result values depending on the variable, make them in the form of functions.

 const bill_1 = 40; const bill_2 = 275; const bill_3 = 430; const tip_percentage = (bill) => (bill >= 50 && bill <= 300? 0.15: 0.2); const printTipResult = (bill) => { console.log(`The third table's bill came out to $${bill}. After the tip of ${tip_percentage(bill)}% (equalling: $${bill * tip_percentage(bill)}) was added, the final amount owed is: $${bill * tip_percentage(bill) + bill}`); }; printTipResult(bill_1); printTipResult(bill_2); printTipResult(bill_3);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM