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

Multiplication Assignment Operator (*=) ใน JavaScript

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 = ba = b
+=a += ba = a + b
-=a -= ba = a - b
*=a *= ba = a * b
/=a /= ba = a / b
%=a %= ba = a % b
**=a **= ba = a ** b
<<=a <<= ba = a << b
>>=a >>= ba = a >> b
>>>=a >>>= ba = a >>> b
&=a &= ba = a & b
|=a |= ba = a | b
^=a ^= ba = 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() แล้วคูณ