วิธีใช้หรือเงื่อนไขในคำสั่ง JavaScript IF


108

ฉันเข้าใจว่าใน JavaScript คุณสามารถเขียน:

if (A && B) { do something }

แต่ฉันจะใช้ OR เช่น:

if (A OR B) { do something }

2
นี่เป็นวิธีที่ไม่เฉพาะ jQuery มันเป็นเพียงไลบรารี Javascript คำถามของคุณคือ Javascript โดยเฉพาะ
BalusC

2
@BalusC วันนี้พวกเขาตรงกันจริง: P
Dolbz

1
@Dolbz pfooo ไม่เห็นด้วย !! : P
web-stars

1
@ web-stars มีการเปลี่ยนแปลงมากมายตั้งแต่ปี 2010 :)
Dolbz

@Dolbz mmm โอ๊ะโอ ... : P และฉันยังไม่รู้อะไรเลยตั้งแต่ปี 2010
web-stars

คำตอบ:



85

น่าสังเกตว่า||จะกลับมาtrueถ้าทั้งสองAและBเป็นtrueมี

ใน JavaScript ถ้าคุณกำลังมองหาAหรือB, แต่ไม่ใช่ทั้งสองคุณจะต้องทำสิ่งที่คล้ายกับ:

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

ไม่ควรเป็นวลีแรก "น่าสังเกตว่า || จะกลับมาจริงถ้า EITHER var A OR var B เป็นจริง" ?? หมายความว่าสิ่งที่คุณกล่าวถึงคือ (true | true) = true ซึ่งเป็นเรื่องธรรมดาและเข้าใจได้
Punith Raj

10
(ก &&! ข) || (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 ทำไมจริงหรือเท็จถึงจะอยู่นอกช่วง 32 บิตด้วยเหตุนี้จึงเป็นเพียง 0 หรือ 1 และ btw ถ้าคุณเปรียบเทียบตัวเลขให้ใช้ !! n เพื่อรับค่าบูลีน




9

นี่คือตัวอย่างของฉัน:

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

นี่บอกว่าถ้าคำตอบคือใช่ใช่หรือใช่กว่าสิ่งเดียวกันจะเกิดขึ้น


1
คำตอบของคุณดีขึ้นตามคำตอบที่มีอยู่หรือไม่? เป็นกรณีการใช้งานเฉพาะหรือไม่?
emecas

ได้ผลหรือไม่ ฉันเขียนโค้ดแบบนั้น แต่เป็นข้อผิดพลาดทางไวยากรณ์ ฉันเขียนโค้ดแบบนี้ if (name === 'Jam' || name === 'Jem' || name == 'Jum')
Penguin

7
ใช่ฉันค้นพบวิธีที่ยากที่คุณต้องรวมแต่ละคำสั่งแยกกัน ฉันคิดว่าif (number === 1||2||3)มันเป็นแบบwhile (true)นั้น เงื่อนไขที่สองและสามถามว่า 2 คือ 2 และ / หรือ 3 เป็น 3 หรือไม่เงื่อนไขเหล่านี้มักจะแก้ไขตามที่คำสั่งนั้นจะผ่านไปเสมอ มีแผนจะลดจำนวนตัวละคร การเก็บข้อความไว้ในวงเล็บทำให้อ่านง่ายขึ้น
TimSmith-Aardwolf

3
ดีกว่ามากที่จะใช้. toLowerCase () แทนที่จะต้องตรวจสอบรูปแบบตัวพิมพ์ที่แตกต่างกันทั้งหมด
AquaAlex

1
var choice = prompt ("คุณเลือกเป่ายิ้งฉุบหรือกรรไกร?"). toLowerCase (); if (userChoice! = ("paper" || "rock" || "กรรไกร")) {console.log ("Invalid Choice made"); }
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!")

ซึ่งจะมองหา "my" ภายในตัวแปร "myString" คุณสามารถแทนที่สตริงได้โดยตรงแทนตัวแปร "myString"

ในฐานะโบนัสเพิ่มเติมคุณสามารถเพิ่ม "i" ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ "g" ในการค้นหาได้เช่นกัน

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


น่าสนใจ. เอกสารประกอบ?
Ken Sharp

0

มากขึ้นแล้วคำสั่งหนึ่งเงื่อนไขเป็นสิ่งจำเป็นที่จะใช้ประกอบการหากเงื่อนไขและสัญกรณ์เป็นOR(||)||

if(condition || condition){ 
   some stuff
}

1
ทำไมคุณตอบคำถามเก่า ๆ ด้วยคำตอบเดียวกันทุกประการ
Ken Sharp

0

คุณสามารถใช้ Like

if(condition1 || condition2 || condition3 || ..........)
{       
     enter code here
}

1
ทำไมคุณตอบคำถามเก่า ๆ ด้วยคำตอบเดียวกันทุกประการ
Ken Sharp

0

ถ้าเราจะพูดถึงนิพจน์ทั่วไปเราอาจพูดถึงswitchประโยคนั้นด้วย

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.