奇怪的结果javascript比较 [英] strange results javascript comparison
问题描述
我有一个关于javascript的入门级问题。当执行以下结果时,结果是
false
true
有些数字相等
数字,数字
I have an entry level question for javascript. When executing the following the result is
false
true
Some numbers are equal
number, number
numbernumbernumber
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>
推荐答案
用JavaScript(或任何其他语言)进行复合比较语法派生自B),你不做像
To do compound comparisons in JavaScript (or any other language syntactically derived from B), you don't do things like
(l>k>m) // <=== Wrong
相反,如果你想知道 l
大于 k
且 k
大于 m
,你使用&&
(逻辑和运算符),如下所示:
Instead, if you want to know if l
is greater than k
and k
is greater than m
, you use &&
(the logical "and" operator), like this:
(l>k && k>m)
详情:
您的原始表达式(l> k> m)
分解为:
Your original expression (l>k>m)
breaks down into this:
((l>k)>m)
这意味着您将获得以下其中一项:
which means you'll get one of these:
(true>m)
// or
(false>m)
将布尔值与数字进行比较时, boolean被强制转换为数字,因此生效:
When comparing a boolean to a number, the boolean is coerced to a number, so that becomes in effect:
(1>m)
// or
(0>m)
这篇关于奇怪的结果javascript比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!