Signatur
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
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
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();
Verwendung mit BigInt
let wert = 100n;
wert *= 25n;
console.log(wert);
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);
// 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 einenTypeError. 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 *= 2wirft einenReferenceError. - Sonderwerte:
Infinity *= 0ergibtNaN;Infinity *= 2ergibtInfinity.