โอเปอเรเตอร์กำหนดค่า (=) ใช้เพื่อ กำหนดค่าจาก operand ขวามือให้กับ operand ซ้ายมือ Operand ซ้ายมือต้องเป็นตัวแปรหรือสิ่งที่สามารถกำหนดค่าได้ (lvalue) ในขณะที่ operand ขวามือสามารถเป็นนิพจน์ أيได้
ตัวอย่างพื้นฐาน
<html>
<body>
<script>
var a = 33;
var b = 10;
document.write("Value of a => (a = b) => ");
result = (a = b); // กำหนดค่า b ให้ a แล้วส่งค่าที่กำหนดกลับ (10)
document.write(result);
</script>
</body>
</html>
ลำดับการทำงาน
- ประเมินค่า operand ขวามือ (
b= 10) - กำหนดค่านั้นให้ operand ซ้ายมือ (
aกลายเป็น 10) - ส่งค่าที่กำหนดกลับมาเป็นผลลัพธ์ของนิพจน์ทั้งหมด (10)
Operator Assignment แบบย่อ (Compound Assignment)
JavaScript มีโอเปอเรเตอร์กำหนดค่าร่วมกับการคำนวณ:
| โอเปอเรเตอร์ | ตัวอย่าง | เทียบเท่า |
|---|---|---|
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
&= | a &= b | a = a & b |
|= | a |= b | a = a | b |
^= | a ^= b | a = a ^ b |
<<= | a <<= b | a = a << b |
>>= | a >>= b | a = a >> b |
>>>= | a >>>= b | a = a >>> b |
การกำหนดค่าแบบซ้อน (Chaining Assignment)
var a = b = c = 10; // a=10, b=10, c=10 // ทำงานจากขวาไปซ้าย: c=10, แล้ว b=c, แล้ว a=b
ข้อควรระวัง
- ไม่สับสนกับ
==(เทียบค่า) หรือ===(เทียบค่าและชนิด) - ในเงื่อนไข
if (a = b)จะเป็นการกำหนดค่า ไม่ใช่การเทียบค่า (บั๊กที่พบบ่อย) - ใช้
constสำหรับค่าคงที่ เพื่อป้องกันการกำหนดค่าซ้ำโดยไม่ตั้งใจ