Das Potenzieren in JavaScript (Das Potenzieren in JavaScript), Lektion, Seite 723370
https://www.purl.org/stefan_ram/pub/potenzieren_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Das Potenzieren in JavaScript 

Der Operator »**« erlaubt das Potenzieren, er fehlt in älteren JavaScript -Implementationen (aus der Zeit vor 2017).

Einführendes Beispiel

Das folgende Beispiel zeigt die Berechnung von ‹  ›.

Auswertung
2 ** 3
8

Die lexikalische Einheit »**«

Der Operator »**« besteht aus einer einzigen lexikalischen Einheit »**«, die aus zwei direkt aufeinanderfolgenden Sternen »*« besteht.

Die Syntax von »**«

Der Operator »**« ist ein binärer Infixoperator, wie beispielsweise auch »+«.

Neue, erweiterte Syntax (vereinfacht)
Ausdruck
.----------.
---.----------------->| Literal |-------------------------------.--->
| '----------' ^
| .-. .----------. .-. |
'-------->( ( )--->| Ausdruck |--->( ) )----------------------'
| '-' '----------' '-' |
| .-. .----------. |
'-------->( - )--->| Ausdruck |-------------------------------'
| '-' '----------' |
| .-. .----------. |
'-------->( + )--->| Ausdruck |-------------------------------'
| '-' '----------' |
| .------. .----------. |
'--->( typeof )--->| Ausdruck |-------------------------------'
| '------' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( ** )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( * )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( / )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( + )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( - )--->| Ausdruck |----'
| '----------' '---' '----------' |
| .----------. .---. .----------. |
'----------------->| Ausdruck |--->( === )--->| Ausdruck |----'
'----------' '---' '----------'

Es ist nicht erlaubt, einen Vorzeichenausdruck als linken Operanden zu verwenden.

Auswertung
-2 ** 3
SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'

Ursprünglich sollte dies »(-2)**3« bedeuten, was aber als zu mißverständlich angesehen wurde, nachdem diverse andere Programmiersprachen es schon als »(-2**3)« definiert hatten. In der Mathematik bedeutet ‹ xⁿ  › dasselbe wie ‹ −(xⁿ ) ›. Daher war es das Sicherste, diese Verwendung ganz zu verbieten.

Ein eingeklammerter Operand ist jedoch möglich.

Auswertung
( -2 )** 3
-8

Genauso kann ein Vorzeichen auf einen eingeklammerten Ausdruck angewendet werden.

Auswertung
-( 2 ** 3 )
-8

Ein Vorzeichenausdruck als rechter Operand ist erlaubt.

Auswertung
2 ** -3
0.125

Prioritäten

Der Operator »**« hat eine etwas stärkere Priorität als die Multiplikation »**« und ist rechtsassoziativ.

Eigenschaften von Operatoren

A P A (A = Aritaet, P = Position [Zirkumfix, Praefix, Infix], A = Assoziativitaet)

() 1 Z Eingeklammerter Ausdruck
+ - typeof 1 P Unaere vorangestellte Operatoren (Vorzeichen)
** 2 I R Potenzieren
* / 2 I L "Punktrechnung": Multiplikation, Division
+ - 2 I L "Strichrechnung": Addition, Subtraktion

Die Semantik von »**«

Dieser Operator ergibt den Wert der Potenzierung seines linken Operandem mit seinem rechten Operanden, also den Wert des linken Operanden „hoch“ den Wert des rechten Operanden. Der linke Operand ist die Basis der rechte der Exponent. Dabei können beide Werte auch Nachkommastellen haben.

Informationen zur Bedeutung des Potenzierens und zu den Rechengesetzen für das Potenzieren findet man in Mathematikbüchern. Sie sollen hier nicht wiederholt werden, da sich dieser Text auf die Programmiersprache JavaScript  konzentriert.

Beispiele zu »**«

Das folgende Beispiel zeigt eine einfache Potenzierung ‹  ›.

Auswertung
2**3
8

Dieser Operator ist nicht kommutativ. Das Vertauschen der Reihenfolge seiner Operanden kann also zu einem anderen Ergebnis führen. ‹ 2³≠3² ›

Auswertung
3**2
9

Die Priorität des Potenzierens ist höher als die der Multiplikation. ‹ 2×2³ ›

Auswertung
2 * 2**3
16

Das Potenzieren ist rechtsassoziativ.

Auswertung
2**3**2
512

Der Ausdruck »2**3**2« bedeutet also »2**( 3**2 )« und nicht etwa »( 2**3 )**2«.

Auswertung
2 **( 3**2 )
512

Durch Verwendung von Klammern können Teilausdrücke gekennzeichnet werden.

Auswertung
( 2**2 )**2
16

Eine Wurzel kann durch Potenzierung mit dem Kehrwert des Wurzelexponenten ausgedrückt werden. Im folgenden berechnen wir die dritte Wurzel aus 216.

Auswertung
216**( 1/3 )
5.999999999999999

Zweierpotenzen spielen in der Informatik eine wichtige Rolle.

Auswertung
2**8
256

»3E-10« ist dasselbe wie »3 * 10**-10« ‹ 3×10⁻¹º ›.

Auswertung
3 * 10**-10
3e-10

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723370 stefan_ram:723370 Das Potenzieren in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723370, slrprddef723370, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/potenzieren_javascript