Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

โอเปอเรเตอร์ OR Assignment (|=) ใน JavaScript คืออะไร?


โอเปอเรเตอร์ 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 ||=

ข้อควรระวัง

  • ทำงานกับ 32-bit Signed Integer (แปลงอัตโนมัติ)
  • ไม่สามารถใช้กับ const
  • กับ Boolean: true |= false → true (1 | 0 = 1)
โอเปอเรเตอร์ระดับตัวอย่างผลลัพธ์
|=Bitwise1 | 23 (01 \| 10 = 11)
||=Logical (ES2021)0 ||= 22 (Falsy → ใช้ค่าใหม่)
||=Logical1 ||= 21 (Truthy → คงค่าเดิม)