如何在JavaScript IF语句中使用OR条件?


108

我了解您可以使用JavaScript编写:

if (A && B) { do something }

但是我该如何实现OR,例如:

if (A OR B) { do something }

2
顺便说一下,这不是jQuery特有的。这只是一个Javascript库。您的问题是Java特定的。
BalusC 2010年

2
@BalusC这些天他们实际上是同义词:P
Dolbz'3

1
@Dolbz pfooo不同意!:P
网络明星

1
@ web-stars自2010年以来发生了很多变化:)
Dolbz

@Dolbz mmm,哎呀...:P而且我从2010
网络明星

Answers:



84

值得注意的是,||也将返回true如果两个ABtrue

在JavaScript中,如果要查找AB但不能同时查找,则需要执行以下操作:

if( (A && !B) || (B && !A) ) { ... }

不应作为第一句话是“值得一提的是,如果EITHER var A或var B为true,||将返回true”?这意味着您提到的是(true | true)= true。这是常见且被理解的。
Punith Raj

10
(A &&!B)|| (B &&!A)可以用更平滑的A ^ B 取代

1
@Murplyx:在大多数情况下可以,但是32位范围以外的数字可能会失败。(Math.pow(2,32)-1) ^ 0; // -1 (success)...Math.pow(2,32) ^ 0; // 0 (failure)

if (A ? !B : B) {...将是没有32位限制的更短替代。也许if (!A != !B) {...

1
@squint为什么true或false都超出32位范围,因此它们只有0或1,如果比较数字,顺便说一句,只需使用!! n即可获得布尔值。




9

这是我的例子:

if(userAnswer==="Yes"||"yes"||"YeS"){
 console.log("Too Bad!");   
}

这就是说,如果答案是“是”或“是”,那么同一件事就会发生


1
您的答案会在现有答案的基础上有所改善吗?这是一个特定的用例吗?
emecas 2014年

可以吗 我这样编码,但这是语法错误。我这样编码。if (name === 'Jam' || name === 'Jem' || name == 'Jum')
企鹅

7
是的,我发现您必须分别包含每个语句的困难方式。我if (number === 1||2||3)算是这样while (true); 第二个和第三个条件询问2是2和/或3是3。它们始终以对始终通过的语句为true的方式进行解析。我打算减少字符数。但是,将语句放在括号中确实使它更易于阅读。
TimSmith-Aardwolf

3
使用.toLowerCase()更好,而不是必须检查所有不同的大小写变体。
AquaAlex

1
var choice =提示(“您选择石头,纸张还是剪刀?”)。toLowerCase(); if(userChoice!=(“ paper” ||“ rock” ||“ scissors”)){console.log(“做出无效选择”); }
AquaAlex

1

也可以使用正则表达式

var thingToTest = "B";
if (/A|B/.test(thingToTest)) alert("Do something!")

以下是一般的正则表达式示例:

var myString = "This is my search subject"
if (/my/.test(myString)) alert("Do something here!")

这将在变量“ myString”中查找“ my”。您可以直接用字符串代替“ myString”变量。

另外,您还可以在搜索中添加不区分大小写的“ i”和全局“ g”。

var myString = "This is my search subject"
if (/my/ig.test(myString)) alert("Do something here");


有趣。文档?
肯·夏普

0

OR(||)如果条件和符号为,则需要一个以上的条件语句才能使用运算符||

if(condition || condition){ 
   some stuff
}

1
为什么用完全相同的答案回答旧问题?
肯·夏普


0

如果我们要提及正则表达式,则不妨提及switchstatement

var expr = 'Papayas';
switch (expr) {
  case 'Oranges':
    console.log('Oranges are $0.59 a pound.');
    break;
  case 'Mangoes':
  case 'Papayas': // Mangoes or papayas
    console.log('Mangoes and papayas are $2.79 a pound.');
    // expected output: "Mangoes and papayas are $2.79 a pound."
    break;
  default:
    console.log('Sorry, we are out of ' + expr + '.');
}


-1

只需使用 ||

if (A || B) { your action here }

注意:带字符串和数字。更复杂。

检查以下内容是否有不足:


7
这个问题已经在四年前回答了。您的答案会在现有答案的基础上有所改善吗?
Frambot

@JoeFrambach:不,我只是想提出一个更清晰的答案:)
haotang 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.