我有 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
}