奇怪的结果javascript比较 [英] strange results javascript comparison

查看:73
本文介绍了奇怪的结果javascript比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于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


  1. 为什么前两个值不同?

  2. 为什么第一个错了?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆