โอเปอเรเตอร์บวกกำหนดค่า (+=) เป็น Compound Assignment Operator ที่ทำสองอย่างพร้อมกัน: บวก operand ขวามือกับ operand ซ้ายมือ แล้วกำหนดผลลัพธ์กลับให้ operand ซ้ายมือ
ไวยากรณ์
x += y // เทียบเท่า x = x + y
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 33;
var b = 10;
document.write("Value of a => (a += b) => ");
result = (a += b); // a = a + b = 43
document.write(result); // 43
document.write("<br>a ตอนนี้ = " + a); // 43
</script>
</body>
</html>
พฤติกรรมกับชนิดข้อมูลต่างๆ
เหมือนกับโอเปอเรเตอร์ + ทำงานได้ทั้งตัวเลขและสตริง:
// ตัวเลข var num = 10; num += 5; // 15 num += 3.5; // 18.5 // สตริง var str = "Hello"; str += " World"; // "Hello World" // Boolean (แปลงเป็นตัวเลข) var bool = true; bool += 1; // 2 (true = 1) // Array (แปลงเป็นสตริง) var arr = [1, 2]; arr += 3; // "1,23" (array.toString() + "3")
การใช้งานทั่วไป
- สะสมค่าในลูป:
sum += value - สร้างสตริงยาว:
html += '<div>...</div>' - อัปเดตคุณสมบัติออบเจ็กต์:
obj.count += 1
ประสิทธิภาพ
ในรูปแบบเดิม a = a + b จะสร้างค่าชั่วคราวแล้วกำหนดใหม่ ส่วน a += b อาจปรับปรุงได้ดีกว่าในบาง Engine แต่ความแตกต่างมักน้อยมาก ควรเลือกใช้แบบที่อ่านง่ายกว่า
ข้อควรระวัง
- กับอาร์เรย์:
arr += valจะแปลงอาร์เรย์เป็นสตริง ไม่ใช่ push ค่าเข้าไป (ใช้arr.push(val)แทน) - กับออบเจ็กต์: จะเรียก
toString()แล้วต่อสตริง - ไม่สามารถใช้กับ
constได้