JavaScript中的“x == a || b”和“x == a || x == b”等价语句?

时间:2012-09-12 19:40:26

标签: javascript if-statement

这些陈述如何相同?

var test ='one'

if( test == 'car' || 'one' ){
console.log('spo')
}

if( test == 'car' || test == 'one' ){
console.log('spo')
}

4 个答案:

答案 0 :(得分:6)

不,他们不等同。

if( test == 'car' || 'one' ){
    console.log('spo')
}

相当于

if( test == 'car' || 'one' != ''){
  console.log('spo')
}

答案 1 :(得分:2)

没有。第一次测试将永远通过。

如果||的左侧是假的,它将返回右侧。因此将返回右侧('one')。这是真的,所以测试将通过。

答案 2 :(得分:1)

没有。他们不是。

在第一个条件中,test == 'car' || 'one' (test == 'car') || 'one'相同,总是评估为truthy-value(即相等的结果“one”)。

后者条件仅在测试为“car”或“one”时产生true,在所有其他情况下为false。

尝试使用失败的测试值,例如“hello”作为反例。

答案 3 :(得分:0)

嗯,不。像Javascript这样的语言接受'one'是真的。所以第一次测试总是会通过。 第二个有错误的能力,因为我们不知道测试是什么。