Multiplication Assignment (*=) คูณค่าด้านขวากับตัวแปรด้านซ้าย แล้วเก็บผลลัพธ์กลับไปที่ตัวแปรด้านซ้าย
ตัวอย่างจากบทความ
<html>
<body>
<script>
var a = 33;
var b = 10;
document.write("Value of a => (a *= b) => ");
result = (a *= b);
document.write(result); // 330
</script>
</body>
</html>
ความหมายเทียบเท่า
a *= b; // เทียบเท่า a = a * b;
ตัวอย่างการใช้งาน
1. Basic Usage
let x = 5; x *= 3; // x = 15 x *= 2; // x = 30
2. ใน Loop (คำนวณ Factorial)
function factorial(n) {
let result = 1;
for (let i = 2; i <= n; i++) {
result *= i;
}
return result;
}
factorial(5); // 120
3. กับ Array/Object (ไม่ทำงานโดยตรง)
// ไม่ได้: [1,2] *= 2 // Error // แต่ทำได้กับ property obj.value *= 2; arr[0] *= 2;
Assignment Operators ทั้งหมด
| Operator | ตัวอย่าง | เทียบเท่า |
|---|---|---|
= | a = b | 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 |
|= | a |= b | a = a | b |
^= | a ^= b | a = a ^ b |
Precedence และ Associativity
- Precedence: ต่ำ (ระดับ 16 จาก 17) - ทำหลังจาก arithmetic/logical
- Associativity: Right-to-left
a = b = c = 0; // Right-to-left: a = (b = (c = 0)) a *= b += 1; // a *= (b += 1)
ข้อควรระวัง
- กับ
null/undefined:null *= 5→ 0,undefined *= 5→ NaN - กับ String:
"5" *= 2→ 10 (แปลงเป็น number อัตโนมัติ) - กับ Object: เรียก
valueOf()แล้วคูณ