JavaScript三个等号和三个变量的比较

4
有人能解释一下这个吗?
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? <--

还有一种布尔逻辑的名称,可以此方式比较超过两个数字吗?(我称之为“三变量比较”,但我认为这可能是错误的...)

2个回答

7
这个表达式:
1 === 1 === 1

被评估为:

(1 === 1) === 1

在评估括号内的表达式之后:

true === 1

而那个表达式在逻辑上是错误的。尽管如此,下面的表达式按预期返回true

1 === 1 === true

2
哈哈,应该多测试一下:5 == 5 == 5也是错误的,但因为1 == true,我在使用1 == 1 == 1的例子时被绊倒了。+1感谢! - user1318194
还有一个问题:我能否不使用繁琐的表达式(例如 x === y && y === z && x === z)来实现我想要做的事情? - user1318194
@DuncanNZ 是否总是涉及三个变量? - Ja͢ck
那么,比较三个变量的最短方式是什么? - vsync
1
通常,要比较N个不同的变量是否相等(N>1),您需要进行N-1次比较。 - Ja͢ck
显示剩余2条评论

1

相等性是一种从左到右优先级运算

因此:

1 == 1 == 1
true == 1
true

并且:

1 === 1 === 1
true === 1
false // because triple-equals checks type as well

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接