Start · Sprachen · JavaScript · Referenz · Multiplikationszuweisung (*=)

Multiplikationszuweisung (*=)

Operator

Der Multiplikationszuweisungsoperator <code>*=</code> multipliziert den linken Operanden mit dem rechten und weist das Ergebnis dem linken Operanden zu.

seit JavaScript ES1 Kategorie: syntax

Signatur

x *= y

Beschreibung

Der Operator *= ist eine Kurzschreibweise für die kombinierte Multiplikation und Zuweisung. Der Ausdruck x *= y ist semantisch äquivalent zu x = x * y, wertet den linken Operanden jedoch nur einmal aus. Er gehört zur Gruppe der zusammengesetzten Zuweisungsoperatoren (compound assignment operators) und verbessert die Lesbarkeit sowie Kürze von Berechnungen, bei denen eine Variable mit einem Faktor skaliert werden soll.

Beide Operanden werden vor der Multiplikation in eine Zahl umgewandelt (implizite Typumwandlung). Enthält einer der Operanden einen nicht numerischen Wert, der sich nicht sinnvoll konvertieren lässt (z. B. ein String wie "abc"), ergibt die Operation NaN. Mit BigInt-Werten funktioniert *= ebenfalls, solange beide Operanden vom Typ BigInt sind – eine Mischung aus Number und BigInt wirft einen TypeError.

Typische Einsatzgebiete sind Skalierungsoperationen in Animationen, Preisberechnungen, physikalische Simulationen oder überall dort, wo ein Wert wiederholt mit einem konstanten Faktor verändert wird. Der Operator ist seit den Anfängen von JavaScript (ES1) verfügbar und in allen Browsern sowie Node.js-Umgebungen uneingeschränkt nutzbar.

Parameter

Name Typ Default Beschreibung
$x Pflicht number | bigint Linker Operand – eine Variable oder ein anderer zuweisbarer Ausdruck (lvalue), der als Basis der Multiplikation dient und das Ergebnis aufnimmt.
$y Pflicht number | bigint Rechter Operand – der Faktor, mit dem x multipliziert wird.

Rückgabewert

Typ
number | bigint
Beschreibung
Der neue Wert von x nach der Multiplikation. Bei nicht konvertierbaren Operanden wird NaN zurückgegeben.

Beispiele

Grundlegende Verwendung mit Zahlen

let preis = 49.99;
const mwstFaktor = 1.19;

preis *= mwstFaktor;
console.log(preis.toFixed(2)); // Bruttopreis
59.49

Skalierung in einer Animations-Schleife

let scale = 1.0;
const growFactor = 1.05;
const maxScale = 3.0;

const animate = () => {
  if (scale < maxScale) {
    scale *= growFactor;
    console.log(`Aktuelle Skalierung: ${scale.toFixed(3)}`);
    requestAnimationFrame(animate);
  }
};

animate();
Aktuelle Skalierung: 1.050 Aktuelle Skalierung: 1.103 Aktuelle Skalierung: 1.158 ...

Verwendung mit BigInt

let wert = 100n;
wert *= 25n;
console.log(wert);
2500n

Typumwandlung und NaN-Verhalten

let a = 10;
a *= '3';      // '3' wird zu 3 konvertiert
console.log(a);

let b = 10;
b *= 'abc';    // nicht konvertierbar → NaN
console.log(b);
30 NaN

// Wichtig · Fallstricke

Typumwandlung: JavaScript wandelt den rechten Operanden bei Number-Variablen automatisch in einen numerischen Wert um. Zeichenketten wie "5" werden dabei korrekt zu 5 konvertiert, während nicht-numerische Strings zu NaN führen.

  • Kein gemischter BigInt/Number-Einsatz: let x = 5n; x *= 2; wirft einen TypeError. Beide Seiten müssen denselben Typ haben.
  • Nur auf lvalues anwendbar: Der linke Operand muss eine zuweisbare Größe sein (Variable, Array-Element, Objekteigenschaft). 5 *= 2 wirft einen ReferenceError.
  • Sonderwerte: Infinity *= 0 ergibt NaN; Infinity *= 2 ergibt Infinity.