在Javascript中,我可以在一个条件下使用==两次吗?

时间:2014-07-15 14:44:20

标签: javascript if-statement

我的意思是我是否能够,例如,键入:

     if(numb1 == numb2 == numb3){
        //exec code
     }

2 个答案:

答案 0 :(得分:2)

扩展我的评论:

  

可以,但这可能并不意味着你的想法。

它“翻译”为:

if( (numb1 == numb2) == numb3)

==可以被认为是一个函数,它接受两个参数并且如果它们相等则返回true。所以你的代码是:

if( [true or false] == numb3)

仅当numb3是布尔值时,这将起作用,对应于numb1numb2的(in)相等。如果你想检查元素是否相等,那么不是的方法。


要检查数组的所有元素是否相等,请尝试以下方法:

function array_elements_equal(arr) {
    if( arr.length < 2) return true;
    var l = arr.length, i;
    for( i=1; i<l; i++) {
        if( arr[0] != arr[i]) return false;
    }
    return true;
}

var arr = [numb1, numb2, numb3];
if( array_elements_equal(arr)) {
    alert("Hello!");
}

现在为了一些随机的乐趣:

0==0              // true
0==0==0           // false
0==0==0==0        // true
0==0==0==0==0     // false
0==0==0==0==0==0  // true
...

答案 1 :(得分:2)

可以,这并不一定意味着它会被评估为你所期待的。

旁注:通常,我们必须考虑Javascript&#39; Operator Precedence,但由于我们只使用一种类型的运营商,它是无关紧要的,只是从左到右评估声明。

true == true == true肯定会评估为true,因为语句的第一部分(true == true)评估为true,然后将其与第三个运算符进行比较(实际上)进行剩余的比较true == true),它将评估为true本身。

然而,当出现以下情况时,这会成为一个问题:

true == false == false

当然,这必须评估为false!但是,经过进一步检查,结果为true。为什么?这实际上与陈述

相同
(true == false) == false
      ^^
   false == false
         ^^
        true

简而言之:当您以这种方式使用运算符时要小心,因为它们不像您想象的那样运行。在大多数情况下,您最好将语句分成多个条件。

JSFiddle