我有 3 个随机数(在这种特定情况下,介于 1 和 7 之间,但这并不重要)。我想通过使用检查我是否得到“三种类型”
if (x==y==z) {
code
}
x==y
问题是何时z==1
x==y==z
返回 true。如何检查 x、y 和 z 是否实际得到相同的值?
示例:5==5==1
会返回true,具体如何检查5==5==5
?(不包括5==5==1
)
我有 3 个随机数(在这种特定情况下,介于 1 和 7 之间,但这并不重要)。我想通过使用检查我是否得到“三种类型”
if (x==y==z) {
code
}
x==y
问题是何时z==1
x==y==z
返回 true。如何检查 x、y 和 z 是否实际得到相同的值?
示例:5==5==1
会返回true,具体如何检查5==5==5
?(不包括5==5==1
)
通过适当的比较:
x === y && y === z
// due to transitivity, if the above expression is true, x === z must be true as well
x==y==z
实际上被评估为
(x == y) == z
即你要么在比较,true == z
要么false == z
我认为这不是你想要的。此外,它还进行类型转换。举个极端的例子:
[1,2,4] == 42 == "\n" // true
问题是当
x==y
和z==1
,x==y==z
将返回 true。
是的,因为x == y
会true
,所以你比较true == 1
。true
将转换为数字1
和1 == 1
是true
。
您应该检查单独的&&
操作
if(x == y && x == z){
//all are equal
}