什么';我的应用程序中的javascript三元运算符有什么问题?
我正在编写一个带有提示输入的简单折扣应用程序。 问题在于我的三元运算符——它不计算newPrice,也不显示输入无效。 你能告诉我我做错了什么吗 I如果输入错误,我希望将newPrice分配给null并警告“无效数据” 我的代码:什么';我的应用程序中的javascript三元运算符有什么问题?,javascript,Javascript,我正在编写一个带有提示输入的简单折扣应用程序。 问题在于我的三元运算符——它不计算newPrice,也不显示输入无效。 你能告诉我我做错了什么吗 I如果输入错误,我希望将newPrice分配给null并警告“无效数据” 我的代码: const price=prompt('请输入价格:'); 常量折扣=提示('请输入折扣金额:'); const newPrice=((999999>价格>0)和&(99>折扣>0))?(价格-价格*折扣/100):(空,警报(“无效数据”); console.lo
const price=prompt('请输入价格:');
常量折扣=提示('请输入折扣金额:');
const newPrice=((999999>价格>0)和&(99>折扣>0))?(价格-价格*折扣/100):(空,警报(“无效数据”);
console.log(newPrice)
提示可能正在以字符串形式读取值。
使用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)
const price=parseInt(提示('请输入价格:');
const discount=parseInt(提示('请输入折扣金额:');
const newPrice=((价格和价格>0和价格<999999)和&(折扣和折扣>0和折扣<99))?(价格-价格*折扣/100):(空,警报(“无效数据”);
console.log(newPrice)
首先,将您的输入转换为数字,然后,重构您的条件以使其有效(您不能有x>y>z
IIRC):
const price=parseInt(提示('请输入价格:');
const discount=parseInt(提示('请输入折扣金额:');
const newPrice=((999999>价格)和价格)和((99>折扣)和折扣)?(价格-价格*折扣/100):(空,警报(“无效数据”);
console.log(newPrice)代码>尝试将代码语句分离出来以
确保新价格实际上为空。不未定义
。(根据你的问题)
a>b>c
东西在JS中不起作用。请像我下面所做的或类似的那样重构该语法
const price=prompt('请输入价格:');
常量折扣=提示('请输入折扣金额:');
const newPrice=(价格和(999999>价格)和折扣和(99>折扣))?(价格-价格*折扣/100):空;
console.log(newPrice);
if(!newPrice){alert('Invalid data');}
下面是使用方法if-else
和三元运算符(?:
)执行此操作的示例。但如果你有很多决策,我建议你选择if-else
var price=prompt('请输入价格:');
var折扣=提示('请输入折扣金额:');
var newPrice;
如果((价格>0且价格<9999999)和((折扣>0且折扣<99)){
新价格=价格-(价格*折扣)/100;
}否则{
newPrice='null';
警报(“无效数据”);
}
var newPrice1=((999999>价格和价格>0)和((99>折扣和折扣>0))?(价格-(价格*折扣)/100):('null',警报('Invalid data');
console.log(newPrice);
console.log(newPrice1)代码>可能是运算符优先的事情。如果有疑问,请在Chrome和Firefox开发控制台的thingsWorks fine for me周围加上括号。请检查您的条件,如果您有很多决策权,那么为什么不能使用if-else条件字符串和数字比较在字符串仅包含numbers@ChrisRollins如果没有,请尝试console.log('10'>'9');
.moot。不过这是个好问题。输入提示实际上是将数字作为一个数字(您可以在SO中运行代码段)并且正确地进行减法运算。因此,在提示之前不必添加+
或parseInt
?@ChrisRollins是的,但一般来说,您的代码不应该依赖自动类型强制。