โอเปอเรเตอร์บวก (+) ใน JavaScript มีสองหน้าที่หลัก:
- การบวกตัวเลข (Addition): รวมค่าตัวเลขสองค่า
- การต่อสตริง (String Concatenation): รวมข้อความสองชุด
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 33;
var b = 10;
document.write("a + b = ");
result = a + b;
document.write(result); // 43 (ตัวเลข)
document.write("<br>");
var str1 = "Hello";
var str2 = "World";
document.write(str1 + " " + str2); // "Hello World"
</script>
</body>
</html>
กฎการแปลงชนิดข้อมูล (Type Coercion)
JavaScript จะพยายามแปลง operand ให้เป็นชนิดเดียวกัน:
| Operand 1 | Operand 2 | ผลลัพธ์ | ประเภท |
|---|---|---|---|
| Number | Number | บวกเลข | Number |
| String | String | ต่อข้อความ | String |
| Number | String | ต่อข้อความ | String |
| String | Number | ต่อข้อความ | String |
| Boolean | Number | บวกเลข (true=1, false=0) | Number |
| null | Number | บวกเลข (null=0) | Number |
| undefined | Number | NaN | Number |
ตัวอย่างการแปลงชนิด
5 + 3 // 8 (Number) "5" + 3 // "53" (String) 5 + "3" // "53" (String) true + 1 // 2 (Number) false + 5 // 5 (Number) null + 10 // 10 (Number) undefined + 1 // NaN (Number) [] + 1 // "1" (String - array แปลงเป็น "") [1,2] + 3 // "1,23" (String)
เคล็ดลับ: การแปลงเป็นตัวเลขอย่างรวดเร็ว
+"5" // 5 (Unary +)
-"5" // -5
"5" - 0 // 5
Number("5") // 5 (ชัดเจนกว่า)
ข้อควรระวัง
- ลำดับการทำงาน: จากซ้ายไปขวา (Left-to-right associativity)
"5" + 2 + 3="523"(String) แต่2 + 3 + "5"="55"(Number บวกก่อน แล้วต่อ String)- ใช้ Template Literals (
`${a} ${b}`) แทนการต่อสตริงด้วย + เพื่ออ่านง่ายกว่า