我有一个关于javascript的入门级问题。执行以下操作时,结果为
假
真正
有些数字相等
号码,号码
numbernumbernumber
JS:
function sort3(a, b, c)
{
document.getElementById("output").innerHTML =
(typeof a) + (typeof b) + (typeof c);
if(a > b > c) { return [a, b, c];
else if(a > c > b) return [a, c, b];
else if(c > a > b) return [c, a, b];
else if(c > b > a) return [c, b, a];
else if(b > c > a) return [b, c, a];
else if(b > a > c) return [b, a, c];
else return "Some numbers are equal";
}
HTML:
<p id="ex1"></p>
<p id="output"></p>
<script type="text/javascript">
var m = parseFloat(1);
var k = parseFloat(2);
var l = parseFloat(3);
var q = typeof m;
var w = typeof k;
var e = typeof l;
var res1 = (l>k>m) + "</br>";
res1 += (m<k<l) + "</br>";
var res2 = sort3(m,k,l) + "</br>";
var res3 = (typeof m) + ", " + (typeof Number(m))
document.getElementById("ex1").innerHTML = res1 + res2 + res3;
</script>
答案 0 :(得分:1)
要在JavaScript(或从B语法派生的任何其他语言)中进行复合比较,你不要做像
这样的事情。(l>k>m) // <=== Wrong
相反,如果您想知道l
是否大于k
且k
大于m
,则使用&&
(逻辑“和“运营商”,像这样:
(l>k && k>m)
详细说明:
您的原始表达式(l>k>m)
分解为:
((l>k)>m)
这意味着你会得到其中一个:
(true>m)
// or
(false>m)
将布尔值与数字进行比较时,布尔值被强制转换为数字,因此生效:
(1>m)
// or
(0>m)