โอเปอเรเตอร์การเปรียบเทียบจะเปรียบเทียบค่าของโอเปอเรนด์ 2 รายการและประเมินว่าคำสั่งที่สร้างขึ้นเป็น true หรือ false ตัวอย่างต่อไปนี้ใช้โอเปอเรเตอร์ความเท่าเทียมแบบเข้มงวด (===) เพื่อเปรียบเทียบโอเปอเรนด์ 2 รายการ ได้แก่ นิพจน์ 2 + 2 และค่า 4 เนื่องจากผลลัพธ์ของนิพจน์และค่าตัวเลข 4 เหมือนกัน นิพจน์นี้จึงให้ค่าเป็น true
2 + 2 === 4 > true การบังคับให้ใช้ประเภทและความเท่าเทียม
โอเปอเรเตอร์การเปรียบเทียบที่ใช้บ่อยที่สุด 2 รายการ ได้แก่ == สําหรับความเท่าเทียมแบบหลวม และ === สําหรับความเท่าเทียมแบบเข้มงวด == ทำการเปรียบเทียบแบบหลวมๆ ระหว่างค่า 2 ค่าโดยบังคับให้โอเปอเรนดเป็นประเภทข้อมูลที่ตรงกัน หากเป็นไปได้ เช่น 2 == "2" จะแสดงผลเป็น true แม้ว่าจะมีการเปรียบเทียบระหว่างค่าตัวเลขกับค่าสตริงก็ตาม
2 == 2 > true 2 == "2" > true เช่นเดียวกับ != ซึ่งจะแสดงผล true เฉพาะในกรณีที่โอเปอเรนดที่เปรียบเทียบไม่เท่ากันแบบหลวมๆ
2 != 3 > true 2 != "2" > false การเปรียบเทียบแบบเข้มงวดที่ใช้ === หรือ !== จะไม่บังคับให้เปลี่ยนประเภท หากต้องการให้การเปรียบเทียบแบบเข้มงวดให้ค่าเป็น true ค่าที่เปรียบเทียบกันต้องเป็นประเภทข้อมูลเดียวกัน ด้วยเหตุนี้ 2 == "2" จึงแสดงผลเป็น true แต่ 2 === "2" แสดงผลเป็น false
2 === 3 > false 2 === "2" > false ใช้ === ทุกครั้งที่เป็นไปได้เพื่อลดความคลุมเครือที่อาจเกิดขึ้นจากการบังคับให้เปลี่ยนรูปแบบอัตโนมัติ
| โอเปอเรเตอร์ | คำอธิบาย | การใช้งาน | ผลลัพธ์ |
|---|---|---|---|
| === | ตรงกันทั้งหมด | 2 === 2 | จริง |
| !== | ไม่ตรงกันทั้งหมด | 2 !== "2" | จริง |
| == | เท่ากับ (หรือ "เกือบเท่ากับ") | 2 == "2" | จริง |
| != | ไม่เท่ากัน | 2 != "3" | จริง |
| > | มากกว่า | 3 > 2 | จริง |
| >= | มากกว่าหรือเท่ากับ | 2 >= 2 | จริง |
| < | น้อยกว่า | 2 < 3 | จริง |
| <= | น้อยกว่าหรือเท่ากับ | 2 <= 3 | จริง |
เงื่อนไขที่เป็นจริงและไม่เป็นจริง
ค่าทั้งหมดใน JavaScript จะเป็น true หรือ false โดยปริยาย และสามารถเปลี่ยนให้เป็นค่าบูลีนที่เกี่ยวข้องได้ เช่น โดยใช้ตัวเปรียบเทียบ "เกือบจะเท่ากัน" ชุดค่าที่จำกัดซึ่งบังคับให้เป็น false
0nullundefinedNaN- สตริงว่าง (
"")
ระบบจะบังคับให้ค่าอื่นๆ ทั้งหมดเป็น true ซึ่งรวมถึงสตริงที่มีอักขระตั้งแต่ 1 ตัวขึ้นไปและตัวเลขที่ไม่ใช่ 0 ทั้งหมด ซึ่งโดยทั่วไปเรียกว่าค่า "จริง" และ "เท็จ"
"My string" == true > true 100 == true > true 0 == true > false โอเปอเรเตอร์ตรรกะ
ใช้โอเปอเรเตอร์เชิงตรรกะ AND (&&), OR (||) และ NOT (!) เพื่อควบคุมการไหลของสคริปต์ตามการประเมินคำสั่งแบบมีเงื่อนไขตั้งแต่ 2 รายการขึ้นไป
2 === 3 || 5 === 5; > true 2 === 2 && 2 === "2" > false 2 === 2 && !"My string." > false นิพจน์เชิงตรรกะ "ไม่ใช่" (!) จะปฏิเสธค่าที่ "จริง" หรือ "เท็จ" ของโอเปอเรนด์ โดยประเมินเป็น true หากโอเปอเรนด์ประเมินเป็น false และ false หากโอเปอเรนด์ประเมินเป็น true
true > true !true > false !false > true การใช้โอเปอเรเตอร์ NOT เชิงตรรกะ (!) ไว้หน้าประเภทข้อมูลอื่น เช่น ตัวเลขหรือสตริง จะบังคับให้ค่านั้นเป็นบูลีน และกลับค่าที่ถูกต้องหรือไม่ถูกต้องของผลลัพธ์
"string" > "string" !"string" > false 0 > 0 !0 > true แนวทางปฏิบัติทั่วไปคือการใช้โอเปอเรเตอร์ NOT 2 ตัวเพื่อบังคับให้ข้อมูลเป็นค่าบูลีนซึ่งตรงกันอย่างรวดเร็ว ดังนี้
!!"string" > true !!0 > false โอเปอเรเตอร์ AND และ OR ทางตรรกะจะไม่ทำการบังคับใดๆ ด้วยตนเอง โดยจะแสดงผลค่าของหนึ่งใน 2 ออบเจ็กต์ที่ประเมิน โดยโอบเจ็กต์ที่เลือกจะกำหนดโดยการประเมินนั้น
AND เชิงตรรกะ (&&) จะแสดงผลโอเปอเรเตอร์แรกจาก 2 รายการก็ต่อเมื่อโอเปอเรเตอร์นั้นให้ค่าเป็น false และแสดงผลโอเปอเรเตอร์ที่ 2 ในกรณีอื่นๆ ในการเปรียบเทียบที่ประเมินเป็นค่าบูลีน ระบบจะแสดงผล true เฉพาะในกรณีที่โอเปอเรนดทั้งสองข้างของ AND เชิงตรรกะประเมินเป็น true หากด้านใดด้านหนึ่งประเมินเป็น false ระบบจะแสดงผล false
true && false > false false && true > false false && false > false true && true > true เมื่อใช้ && กับโอเปอเรนด์ที่ไม่ใช่บูลีน 2 รายการ ระบบจะแสดงผลโอเปอเรนด์แรกโดยไม่มีการเปลี่ยนแปลงหากบังคับให้เป็น false ได้ หากบังคับให้ค่าดำเนินการแรกเป็น true ได้ ระบบจะแสดงผลค่าดำเนินการที่ 2 โดยไม่เปลี่ยนแปลง
false && "My string" > false null && "My string" > null "My string" && false > false "My string" && "My second string" > "My second string" 2 === 2 && "My string" > "My string" OR เชิงตรรกะ (||) จะแสดงผลลัพธ์ของโอเปอเรเตอร์แรกใน 2 รายการก็ต่อเมื่อโอเปอเรเตอร์นั้นให้ค่าเป็น true และแสดงผลลัพธ์ของโอเปอเรเตอร์ที่ 2 ในกรณีอื่นๆ ในการเปรียบเทียบที่ประเมินเป็นค่าบูลีน ระบบจะแสดงผล true หากโอเปอเรนดหนึ่งๆ ประเมินเป็น true และหากไม่มีด้านใดประเมินเป็น true ระบบจะแสดงผล false
true || false > true false || true > true true || true > true false || false > false เมื่อใช้ || กับโอเปอเรนด์ที่ไม่ใช่บูลีน 2 รายการ ระบบจะแสดงผลโอเปอเรนด์แรกโดยไม่มีการเปลี่ยนแปลงหากสามารถบังคับให้เป็น true ได้ หากบังคับให้ค่าดำเนินการแรกเป็น false ได้ ระบบจะแสดงผลค่าดำเนินการที่ 2 โดยไม่เปลี่ยนแปลง
false || "My string" > "My string" null || "My string" > "My string" "My string" || false > "My string" "My string" || "My second string" > "My string" 2 === 2 || "My string" > true โอเปอเรเตอร์ Nullish Coalescing
เปิดตัวใน ES2020 "โอเปอเรเตอร์การรวมค่า Nullish" (??) จะแสดงผลโอเปอเรนดแรกเฉพาะในกรณีที่โอเปอเรนดนั้นมีค่าอื่นที่ไม่ใช่ null หรือ undefined ไม่เช่นนั้น ระบบจะแสดงผลตัวดำเนินการที่ 2
null ?? "My string" > "My string" undefined ?? "My string" > "My string" true ?? "My string"; > true ?? คล้ายกับ OR เชิงตรรกะ แต่เข้มงวดกว่าในการประเมินโอเปอเรนด์แรก || จะแสดงผลออบเจ็กต์ที่ 2 สำหรับนิพจน์ใดก็ได้ที่บังคับให้เป็น false ซึ่งรวมถึง undefined และ null ?? จะแสดงผลอาร์กิวเมนต์ที่ 2 เฉพาะในกรณีที่อาร์กิวเมนต์แรกเท่ากับ null หรือ undefined อย่างเคร่งครัดเท่านั้น แม้ว่าจะบังคับให้เป็น false ได้ก็ตาม
0 ?? "My string"; > 0 false ?? "My string"; > false undefined ?? "My string"; > "My string" โอเปอเรเตอร์การกําหนดค่าเชิงตรรกะ
ใช้โอเปอเรเตอร์การกําหนดค่าเพื่อกําหนดค่าของโอเปอเรเตอร์ที่ 2 ให้กับโอเปอเรเตอร์ที่ 1 ตัวอย่างที่พบบ่อยที่สุดของรูปแบบนี้คือเครื่องหมายเท่ากับเดี่ยว (=) ซึ่งใช้เพื่อกำหนดค่าให้กับตัวแปรที่ประกาศ
ใช้โอเปอเรเตอร์การกําหนดค่าเชิงตรรกะเพื่อกําหนดค่าให้กับตัวแปรตามเงื่อนไข โดยอิงตามค่าที่เป็นจริงหรือเท็จของตัวแปรนั้น
โอเปอเรเตอร์การกําหนดค่าเชิงตรรกะ AND (&&=) จะประเมินโอเปอเรเตอร์ที่ 2 และกำหนดค่าให้กับโอเปอเรเตอร์ที่ 1 เฉพาะในกรณีที่โอเปอเรเตอร์ที่ 1 ประเมินเป็น true ซึ่งหมายความว่า "หากโอเปอเรเตอร์ที่ 1 เป็นจริง ให้กําหนดค่าของโอเปอเรเตอร์ที่ 2 แทน"
let myVariable = false; myVariable &&= 2 + 2; > false myVariable = true; myVariable &&= 2 + 2; > 4 ค่าที่ตรงตามเงื่อนไขหรือไม่ตรงตามเงื่อนไขของอาเรย์แรกจะเป็นตัวกำหนดว่าจะมีการดำเนินการกำหนดค่าหรือไม่ อย่างไรก็ตาม การพยายามประเมินโอเปอเรนด์แรกโดยใช้โอเปอเรเตอร์การเปรียบเทียบจะส่งผลให้เกิดบูลีน true หรือ false ซึ่งไม่สามารถกําหนดค่าได้
let myVariable = 5; myVariable > 2 &&= "My string" > SyntaxError: Invalid left-hand side in assignment โอเปอเรเตอร์การกําหนดค่า OR เชิงตรรกะ (||=) จะประเมินโอเปอเรเตอร์ที่ 2 และกำหนดค่าให้กับโอเปอเรเตอร์ที่ 1 หากโอเปอเรเตอร์ที่ 1 ประเมินผลเป็น false ซึ่งหมายความว่า "หากโอเปอเรเตอร์ที่ 1 เป็นเท็จ ให้กําหนดค่าของโอเปอเรเตอร์ที่ 2 แทน"
let myVariable = false; myVariable ||= 2 + 2; > 4 myVariable = true; myVariable ||= 2 + 2; > true ทดสอบความเข้าใจ
โอเปอเรเตอร์ใดที่ระบุว่า "เท่ากับทุกประการ"
======!=