โอเปอเรเตอร์ OR Assignment (|=) เป็น Compound Assignment Operator ที่ทำ Bitwise OR ระหว่าง operand ซ้ายและขวา แล้วกำหนดผลลัพธ์กลับให้ operand ซ้าย
ไวยากรณ์
x |= y // เทียบเท่า x = x | y
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 2; // บิต: 10
var b = 3; // บิต: 11
document.write("(a |= b) => ");
document.write(a |= b); // a = a | b = 3 (บิต: 11)
</script>
</body>
</html>
การคำนวณแบบทีละขั้นตอน
a = 2 // 0010 b = 3 // 0011 a | b // 0011 = 3 a กลายเป็น 3
การประยุกต์ใช้หลัก: Bit Flags (การตั้งค่าสถานะ)
ใช้ เปิด (Set) บิตเฉพาะ ให้เป็น 1 โดยไม่กระทบบิตอื่น:
// กำหนด Flag Constants (Power of 2)
const READ = 1; // 0001
const WRITE = 2; // 0010
const EXECUTE = 4; // 0100
const ADMIN = 8; // 1000
var permissions = 0; // 0000
// ให้สิทธิ์อ่าน
permissions |= READ; // 0001
// ให้สิทธิ์เขียน
permissions |= WRITE; // 0011
// ให้สิทธิ์แอดมิน
permissions |= ADMIN; // 1011
// ตรวจสอบสิทธิ์ (ใช้ &)
if (permissions & WRITE) { /* สามารถเขียนได้ */ }
การประยุกต์ใช้อื่นๆ
- Default Parameters (เก่า):
options |= defaults(ตอนนี้ใช้||หรือ??) - Feature Detection:
support |= hasFeature - Event Flags: รวม Event Type ที่เกิดขึ้น
ความแตกต่าง: |= vs ||=
| โอเปอเรเตอร์ | ระดับ | ตัวอย่าง | ผลลัพธ์ |
|---|---|---|---|
|= | Bitwise | 1 | 2 | 3 (01 \| 10 = 11) |
||= | Logical (ES2021) | 0 ||= 2 | 2 (Falsy → ใช้ค่าใหม่) |
||= | Logical | 1 ||= 2 | 1 (Truthy → คงค่าเดิม) |