我的应用中的javascript三元运算符有什么问题?

时间:2019-02-05 06:55:59

标签: javascript

我正在编写一个带有即时输入的简单折扣应用程序。 问题出在我的三元运算符中-它不计算newPrice,也不显示输入无效。 你能告诉我我做错了吗?

如果输入错误,我想将newPrice分配为null并警告“无效数据”

我的代码:

const price = prompt('Please, enter the price:');
const discount = prompt('Please, enter the discount amount:');

const newPrice = ((9999999 > price > 0) && (99 > discount > 0)) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice)

4 个答案:

答案 0 :(得分:1)

尝试将代码语句分离到

  1. 确保新价格实际上为空。不是undefined。 (根据您的问题)
  2. a > b > c这些东西在JS中无法使用。请按照我下面或类似的方法重构语法。

const price = prompt('Please, enter the price:');
const discount = prompt('Please, enter the discount amount:');

const newPrice = (price && (9999999 > price) && discount && (99 > discount)) ? (price - price * discount / 100) : null;
console.log(newPrice);
if(!newPrice){alert('Invalid data');}

答案 1 :(得分:0)

提示可能正在将值读取为字符串。 使用parseInt或一元+

将其转换为数字
const price = parseInt(prompt('Please, enter the price:'));
const discount = parseInt(prompt('Please, enter the discount amount:'));

const newPrice = ((price && price > 0 && price < 9999999) && (discount && discount >0 && discount < 99 )) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice)

答案 2 :(得分:0)

首先,将输入内容转换为数字,其次,将条件重构为有效的(不能使用x > y > z IIRC):

const price = parseInt(prompt('Please, enter the price:'));
const discount = parseInt(prompt('Please, enter the discount amount:'));

const newPrice = (((9999999 > price) && price) && ((99 > discount) && discount)) ? (price - price * discount / 100) : (null, alert('Invalid data'));
console.log(newPrice);

答案 3 :(得分:0)

以下是通过方法if-else和三元运算符(?:)进行操作的示例。但是,如果您有很多决策权,我建议您选择if-else

var price = prompt('Please, enter the price:');
var discount = prompt('Please, enter the discount amount:');
var newPrice;
if((price>0 && price < 9999999)&&(discount>0 && discount < 99)){
newPrice=price - (price * discount) / 100;
}else{
newPrice='null';
alert('Invalid data');
}
var newPrice1 = ((9999999 > price && price > 0) && (99 > discount && discount > 0)) ? (price - (price * discount) / 100) : ('null', alert('Invalid data'));
console.log(newPrice);
console.log(newPrice1);