我想在金额为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>
答案 0 :(得分:1)
那里有两个不同的问题:
这不是复合比较在JavaScript(或大多数其他编程语言,但不是全部!)中的工作方式。
您使用两个单独的比较和一个“和”运算符:
if (0 < amount && amount < 2)
你所做的事实上最终会像这样工作:
评估0 < amount
并获得结果,即true
或false
。我们称之为r
。
评估r < 2
。
评估r < 2
时,会强制r
为数字。 true
强迫1
,false
强迫0
。因此,您最终将1
或0
与2
进行比较,不 amount
。
您的if
语句都是独立的;第二个if
运行是否第一个if
的条件为真或假。如果你想制作一个“如果这个或如果这个或如果这个”的链,你需要使用else
:
所以:
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)