โอเปอเรเตอร์ OR แบบบิตเวิร์ส (|) ทำการดำเนินการ Boolean OR บนแต่ละบิตของอินจิเจอร์สองตัว ผลลัพธ์จะเป็น 1 หากบิตใดบิตหนึ่ง ของ operand ทั้งสองเป็น 1 ผลลัพธ์จะเป็น 0 ก็ต่อเมื่อทั้งสองบิตเป็น 0
ตารางความจริง
| A | B | A | B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 2; // บิต: 10
var b = 3; // บิต: 11
document.write("(a | b) => ");
result = (a | b);
document.write(result); // ผลลัพธ์: 3 (บิต: 11)
</script>
</body>
</html>
การประยุกต์ใช้ทั่วไป
- การตั้งค่า Flag (Bit Flags): รวมค่าคุณสมบัติหลายค่าเข้าด้วยกัน
- การตรวจสอบ/ตั้งค่าบิตเฉพาะ: ใช้ร่วมกับมาสก์ (mask)
- การแปลงค่า:
val | 0ใช้แปลงเป็น 32-bit integer ได้เร็วกว่าMath.floor()สำหรับค่าบวก
ตัวอย่างการใช้ Flag
const READ = 1; // 001
const WRITE = 2; // 010
const EXECUTE = 4; // 100
var permissions = READ | WRITE; // 011 = 3
// ตรวจสอบสิทธิ์
if (permissions & READ) { /* อ่านได้ */ }
if (permissions & WRITE) { /* เขียนได้ */ }