我的意思是我是否能够,例如,键入:
if(numb1 == numb2 == numb3){
//exec code
}
答案 0 :(得分:2)
扩展我的评论:
你可以,但这可能并不意味着你的想法。
它“翻译”为:
if( (numb1 == numb2) == numb3)
==
可以被认为是一个函数,它接受两个参数并且如果它们相等则返回true
。所以你的代码是:
if( [true or false] == numb3)
仅当numb3
是布尔值时,这将起作用,对应于numb1
和numb2
的(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
简而言之:当您以这种方式使用运算符时要小心,因为它们不像您想象的那样运行。在大多数情况下,您最好将语句分成多个条件。