| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Exponentiation | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mrz 2017 browserbergreifend verfgbar.
Der **Exponentiationsoperator (**)** gibt das Ergebnis des Erhebens des ersten Operanden zur Potenz des zweiten Operanden zurck. Er entspricht Math.pow(), auer dass er auch BigInts als Operanden akzeptiert.
console.log(3 ** 4);
// Expected output: 81
console.log(10 ** -2);
// Expected output: 0.01
console.log(2 ** (3 ** 2));
// Expected output: 512
console.log((2 ** 3) ** 2);
// Expected output: 64
x ** y
Der ** Operator ist fr zwei Typen von Operanden berladen: number und BigInt. Er zwingt beide Operanden zuerst dazu, numerische Werte zu sein und berprft ihre Typen. Er fhrt BigInt-Exponentiation aus, wenn beide Operanden zu BigInts werden; andernfalls fhrt er number-Exponentiation aus. Ein TypeError wird ausgelst, wenn ein Operand zu einem BigInt wird, der andere jedoch zu einem number.
Fr sowohl numbers als auch BigInts gilt, dass 0 zu einer positiven Potenz erhoben 0 zurckgibt, und 0 zur Potenz 0 erhebt 1 zurckgibt. Fr numbers gilt, dass 0 zu einer negativen Zahl erhoben Infinity zurckgibt, whrend -0 zu einer negativen Zahl erhoben -Infinity zurckgibt.
NaN ** 0 (und das entsprechende Math.pow(NaN, 0)) ist der einzige Fall, in dem NaN sich nicht durch mathematische Operationen hindurch propagiert es gibt 1 zurck, obwohl der Operand NaN ist. Zustzlich unterscheidet sich das Verhalten, wenn base 1 ist und exponent nicht endlich (Infinity oder NaN) ist, von IEEE 754, das vorschreibt, dass das Ergebnis 1 sein sollte, whrend JavaScript NaN zurckgibt, um die Rckwrtskompatibilitt mit seinem ursprnglichen Verhalten zu erhalten.
Bei der BigInt-Exponentiation wird ein RangeError ausgelst, wenn der Exponent y negativ ist. Dies liegt daran, dass ein negativer Exponent wahrscheinlich zu einem Wert zwischen 0 und 1 fhren wrde (auer der Basis ist 1, -1 oder 0), der auf null gerundet wird, und wahrscheinlich einen Entwicklerfehler darstellt.
Der Exponentiationsoperator ist rechtsassoziativ: a ** b ** c ist gleich a ** (b ** c).
In den meisten Sprachen, wie PHP, Python und anderen, die einen Exponentiationsoperator (**) haben, hat der Exponentiationsoperator eine hhere Prioritt als unre Operatoren, wie z.B. unres + und unres -, es gibt jedoch einige Ausnahmen. Zum Beispiel ist im Bash-Skript der ** Operator definiert, eine niedrigere Prioritt als unre Operatoren zu haben.
In JavaScript ist es unmglich, einen mehrdeutigen Exponentiationsausdruck zu schreiben. Das bedeutet, Sie knnen keinen unren Operator (mit Prioritt 14, einschlielich +/-/~/!/++/--/delete/void/typeof/await) direkt vor der Basisziffer setzen; das wird einen SyntaxError verursachen.
Zum Beispiel ist -2 ** 2 im Bash-Skript 4, aber in anderen Sprachen (wie Python) -4. Dies ist in JavaScript ungltig, da die Operation mehrdeutig ist. Sie mssen entweder die eine oder die andere Seite einklammern zum Beispiel als -(2 ** 2) um die Absicht eindeutig zu machen.
Beachten Sie, dass einige Programmiersprachen das Zirkumflexsymbol ^ fr Exponentiation verwenden, aber JavaScript verwendet dieses Symbol fr den bitweisen XOR Operator.
2 ** 3; // 8
3 ** 2; // 9
3 ** 2.5; // 15.588457268119896
10 ** -1; // 0.1
2 ** 1024; // Infinity
NaN ** 2; // NaN
NaN ** 0; // 1
1 ** Infinity; // NaN
Andere nicht-BigInt-Werte werden zu Zahlen umgewandelt:
2 ** "3"; // 8
2 ** "hello"; // NaN
2n ** 3n; // 8n
2n ** 1024n; // A very large number, but not Infinity
Sie knnen BigInt- und Zahlenoperanden bei der Exponentiation nicht mischen.
2n ** 2; // TypeError: Cannot mix BigInt and other types, use explicit conversions
2 ** 2n; // TypeError: Cannot mix BigInt and other types, use explicit conversions
Um eine Exponentiation mit einem BigInt und einem Nicht-BigInt durchzufhren, konvertieren Sie einen der Operanden:
2n ** BigInt(2); // 4n
Number(2n) ** 2; // 4
2 ** 3 ** 2; // 512
2 ** (3 ** 2); // 512
(2 ** 3) ** 2; // 64
Um das Vorzeichen des Ergebnisses eines Exponentiationsausdrucks zu invertieren:
-(2 ** 2); // -4
Um die Basis eines Exponentiationsausdrucks zu einer negativen Zahl zu machen:
(-2) ** 2; // 4
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-exp-operator |
+)-)/)*)%)++)--)-)+)Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |