简单地用Javascript编写或编写语句

简单地用Javascript编写或编写语句,javascript,Javascript,假设我有一个if语句,里面有或表达式 if (cow == cow1 || cow == cow2) { //do something } 有没有更好的方法用更简单的方式写这篇文章? 我想象着这样的事情 if (cow == cow1 || cow2) { //do something } 但我想这是行不通的 不,那不行。由于运算符优先级,它被视为: if ((cow == cow1) || cow2)) 这不会将cow与cow2进行比较——如果第一次比较为假,它只会测试cow2是

假设我有一个if语句,里面有或表达式

if (cow == cow1 || cow == cow2) {
  //do something
}
有没有更好的方法用更简单的方式写这篇文章? 我想象着这样的事情

if (cow == cow1 || cow2) {
  //do something
}

但我想这是行不通的

不,那不行。由于运算符优先级,它被视为:

if ((cow == cow1) || cow2))
这不会将
cow
cow2
进行比较——如果第一次比较为假,它只会测试
cow2
是否真实

要测试是否包含在集合中,可以使用数组和
indexOf()
方法:

if ([cow1, cow2].indexOf(cow) != -1)

不,那不行。由于运算符优先级,它被视为:

if ((cow == cow1) || cow2))
这不会将
cow
cow2
进行比较——如果第一次比较为假,它只会测试
cow2
是否真实

要测试是否包含在集合中,可以使用数组和
indexOf()
方法:

if ([cow1, cow2].indexOf(cow) != -1)

在JS中不可能。最好的方法是使用
===
而不是
=
@AndrewL。这是有效的JS,但不能解决这个问题。@nicael:变量名很难看,逻辑非常简单明了。所以我想OP应该更改变量名?无论哪种方式,这都是完全基于意见的,不是堆栈溢出的主题。
[cow1,cow2]。包括(cow)
[cow1,cow2]。indexOf(cow)!=-1
。在JS中不可能。最好的方法是使用
===
而不是
=
@AndrewL它是有效的JS,但不能解决这个问题。@nicael:变量名很难看,逻辑非常简单明了。所以我想OP应该更改变量名?无论哪种方式,这都是完全基于意见的,不是堆栈溢出的主题。
[cow1,cow2]。包括(cow)
[cow1,cow2]。indexOf(cow)!=-1
(cow==cow1 | | | cow2)
不等于
(cow==(cow1 | | | cow2))
=
|
绑得更紧。哎呀,我在想什么呢?现在更新答案。正如@xufox指出的,
Array.prototype.includes也可以使用(但可能需要多填充)。
(cow==cow1 | | | cow2)
并不等于
(cow==(cow1 | | cow2))
=
绑定得更紧密。哎哟,我在想什么呢?现在更新答案。正如@xufox指出的,
Array.prototype.includes也可以使用(但可能需要多填充)。