javascript检查str是否等于foo或bar

时间:2016-04-03 23:23:56

标签: javascript

如果一个字符串等于'foo'或'bar',我试图计算出来,通过下面的测试,看起来test4是实现这个目标的最好方法但我认为test3是最好的方法,但是这个返回false。

为什么这会返回false并且有更好的方法test4?

unlist

2 个答案:

答案 0 :(得分:3)

||运算符不允许您像执行测试所期望的第三个测试一样编写表达式。它在语法上是正确的,但在语义上与你想要做的不同。

最后一次测试可以写成:

test = (str == arr[0]) || (str == 'f');

不需要? :运营商;上述表达式的结果已经是truefalse,因为||的两边都返回布尔值。

进一步解释,

test = str == (arr[0] || 'f');

将首先评估||表达式。它会评估arr[0],如果该子表达式的结果不是假的(不是0""NaNfalsenull ,或undefined)那么||的值就是arr[0]。否则,||的值为'f'。只有这样才能进行==比较,str将与arr[0]'f'进行比较。

答案 1 :(得分:2)

我会用:

var test = (str === 'foo' || str === 'bar');

您不需要使用? :,相等性已经返回truefalse