javascript的值比较,但显示不正确的结果

时间:2015-05-22 17:40:24

标签: javascript

我想在金额为0时显示0 我想在金额为2,3时显示1 我想在金额大于3时显示2

我在javascript以下但没有显示正确的结果。

<script>
{
    var amount = 8; //example amount
    var x = 0;

    if (0 < amount < 2) {
        x = 0;
    } if (1 < amount < 4) {
        x = 1;
    } if (3 < amount) {
        x = 2;
    }     
document.write(x)
}
</script>

1 个答案:

答案 0 :(得分:1)

那里有两个不同的问题:

  1. 这不是复合比较在JavaScript(或大多数其他编程语言,但不是全部!)中的工作方式。

    您使用两个单独的比较和一个“和”运算符:

    if (0 < amount && amount < 2)
    

    你所做的事实上最终会像这样工作:

    1. 评估0 < amount并获得结果,即truefalse。我们称之为r

    2. 评估r < 2

    3. 评估r < 2时,会强制r为数字。 true强迫1false强迫0。因此,您最终将102进行比较, amount

    4. 您的if语句都是独立的;第二个if运行是否第一个if的条件为真或假。如果你想制作一个“如果这个或如果这个或如果这个”的链,你需要使用else

    5. 所以:

      var amount = 8; //example amount
      var x = 0;
      
      if (0 < amount && amount < 2) {
      //            ^^^^^^^^^^
          x = 0;
      } else if (1 < amount && amount < 4) {
      //^^^^               ^^^^^^^^^^
          x = 1;
      } else if (3 < amount) {
      //^^^^
          x = 2;
      }     
      document.write(x)