Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';我的应用程序中的javascript三元运算符有什么问题?_Javascript - Fatal编程技术网

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

什么';我的应用程序中的javascript三元运算符有什么问题?,javascript,Javascript,我正在编写一个带有提示输入的简单折扣应用程序。 问题在于我的三元运算符——它不计算newPrice,也不显示输入无效。 你能告诉我我做错了什么吗 I如果输入错误,我希望将newPrice分配给null并警告“无效数据” 我的代码: const price=prompt('请输入价格:'); 常量折扣=提示('请输入折扣金额:'); const newPrice=((999999>价格>0)和&(99>折扣>0))?(价格-价格*折扣/100):(空,警报(“无效数据”); console.lo

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

I如果输入错误,我希望将newPrice分配给null并警告“无效数据”

我的代码:

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是的,但一般来说,您的代码不应该依赖自动类型强制。