2013-03-11 117 views
4

有人可以解释这个吗?JavaScript三等于和三变量比较

1 == 1  //true, as expected 
1 === 1  //true, as expected 
1 == 1 == 1 //true, as expected 
1 == 1 == 2 //false, as expected 
1 === 1 === 2 //false, as expected 
1 === 1 === 1 //false? <-- 

也有布尔逻辑,超过两个号码以这种方式进行比较的名称(我把它叫做“三变的比较”,但我认为这会是错误的...)

+0

[下面是在JavaScript两个操作者的详细比较性能试验](http://conceptf1.blogspot.com/2014/01/ javascript-triple-equals-vs-double-equals-operators.html) – 2014-01-08 20:09:28

回答

8

该表达式:

1 === 1 === 1 

被评价为:

(1 === 1) === 1 

评估圆括号内的表达式后:

true === 1 

并且该表达式在逻辑上是错误的。下面的表达式返回true如同预期:

1 === 1 === true 
+1

哈哈,应该测试更多:'5 == 5 == 5'也是错误的,但是因为'1 == true'我被绊倒了使用我的例子'1 == 1 == 1'。 +1谢谢! – stackunderflow 2013-03-11 05:52:00

+0

还有一个问题:我可以在没有繁琐表达的情况下做我想做的事吗(比如'x === y && y === z && x === z')? – stackunderflow 2013-03-11 05:57:23

+0

@DuncanNZ是否总是存在三个变量? – 2013-03-11 05:59:20