[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Numbers_and_strings#string_object [Back]  [Original]

Zahlen und Zeichenfolgen - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Zahlen und Zeichenfolgen

In diesem Kapitel werden die beiden grundlegendsten Datentypen in JavaScript vorgestellt: Zahlen und Zeichenfolgen. Wir erlutern ihre zugrunde liegenden Darstellungen und die Funktionen, die verwendet werden, um mit ihnen zu arbeiten und Berechnungen durchzufhren.

In diesem Artikel

Zahlen

In JavaScript werden Zahlen im Doppelprzisions-64-Bit-Binrformat IEEE 754 implementiert (d.h. eine Zahl zwischen 2^1022 und 2^+1023, oder etwa 10^308 bis 10^+308, mit einer numerischen Przision von 53 Bit). Ganze Zahlen bis zu 2^53 1 knnen genau dargestellt werden.

Zustzlich zur Darstellung von Gleitkommazahlen hat der Zahlentyp drei symbolische Werte: Infinity, -Infinity und NaN (not-a-number).

Siehe auch JavaScript-Datentypen und -strukturen fr den Kontext mit anderen primitiven Typen in JavaScript.

Sie knnen vier Arten von Zahlenliteralen verwenden: dezimal, binr, oktal und hexadezimal.

Dezimalzahlen

js
1234567890
42

Dezimale Literale knnen mit einer Null (0) beginnen, gefolgt von einer anderen Dezimalziffer, aber wenn alle Ziffern nach der fhrenden 0 kleiner als 8 sind, wird die Zahl als Oktalzahl interpretiert. Dies wird als veraltete Syntax angesehen, und Zahlenliterale, die mit 0 beginnen, ob als Oktal oder Dezimal interpretiert, verursachen in Strict Mode einen Syntaxfehler verwenden Sie stattdessen das Prfix 0o.

js
0888 // 888 parsed as decimal
0777 // parsed as octal, 511 in decimal

Binrzahlen

Die Binrzahlensyntax verwendet eine fhrende Null, gefolgt von einem Klein- oder Grobuchstaben "B" (0b oder 0B). Wenn die Ziffern nach dem 0b nicht 0 oder 1 sind, wird der folgende SyntaxError ausgelst: "Fehlende Binrziffern nach 0b".

js
0b10000000000000000000000000000000 // 2147483648
0b01111111100000000000000000000000 // 2139095040
0B00000000011111111111111111111111 // 8388607

Oktalzahlen

Die Standardsyntax fr Oktalzahlen besteht darin, sie mit 0o zu prefixen. Zum Beispiel:

js
0O755 // 493
0o644 // 420

Es gibt auch eine veraltete Syntax fr Oktalzahlen indem man die Oktalzahl mit einer Null prefixed: 0644 === 420 und "\045" === "%". Wenn die Ziffern nach dem 0 auerhalb des Bereichs 0 bis 7 liegen, wird die Zahl als Dezimalzahl interpretiert.

js
const n = 0755; // 493
const m = 0644; // 420

Strict Mode verbietet diese Oktalsyntax.

Hexadezimalzahlen

Hexadezimalzahlensyntax verwendet eine fhrende Null, gefolgt von einem Klein- oder Grobuchstaben "X" (0x oder 0X). Wenn die Ziffern nach 0x auerhalb des Bereichs (0123456789ABCDEF) liegen, wird der folgende SyntaxError ausgelst: "Kennung beginnt direkt nach dem numerischen Literal".

js
0xFFFFFFFFFFFFF // 4503599627370495
0xabcdef123456  // 188900967593046
0XA             // 10

Exponentiation

js
0e-5   // 0
0e+5   // 0
5e1    // 50
175e-2 // 1.75
1e3    // 1000
1e-3   // 0.001
1E3    // 1000

Numerische Trennzeichen

Fr alle oben gezeigten Literal-Syntaxen kann ein Unterstrich (_) zwischen Ziffern eingefgt werden, um die Lesbarkeit zu verbessern.

js
1_000_000_000_000
1_050.95
0b1010_0001_1000_0101
0o2_2_5_6
0xA0_B0_C0
1_000_000_000_000_000_000_000n

Siehe die Referenz Lexikalische Grammatik fr weitere Details zu Zahlenliteralen.

Number-Objekt

Das eingebaute Number-Objekt hat Eigenschaften fr numerische Konstanten, wie z.B. maximaler Wert, Not-a-Number und Unendlichkeit. Sie knnen die Werte dieser Eigenschaften nicht ndern und verwenden sie folgendermaen:

js
const biggestNum = Number.MAX_VALUE;
const smallestNum = Number.MIN_VALUE;
const infiniteNum = Number.POSITIVE_INFINITY;
const negInfiniteNum = Number.NEGATIVE_INFINITY;
const notANum = Number.NaN;

Sie beziehen sich immer auf eine Eigenschaft des vordefinierten Number-Objekts wie oben gezeigt und nicht auf eine Eigenschaft eines Number-Objekts, das Sie selbst erstellen.

Die folgende Tabelle fasst die Eigenschaften des Number-Objekts zusammen.

Eigenschaft Beschreibung
Number.MAX_VALUE Die grte positive darstellbare Zahl (1.7976931348623157e+308)
Number.MIN_VALUE Die kleinste positive darstellbare Zahl (5e-324)
Number.NaN Spezieller "not a number"-Wert
Number.NEGATIVE_INFINITY Spezieller negativer unendlicher Wert; wird bei berlauf zurckgegeben
Number.POSITIVE_INFINITY Spezieller positiver unendlicher Wert; wird bei berlauf zurckgegeben
Number.EPSILON Unterschied zwischen 1 und dem kleinsten Wert, der grer als 1 ist und als Number dargestellt werden kann (2.220446049250313e-16)
Number.MIN_SAFE_INTEGER Minimale sichere Ganze Zahl in JavaScript (2^53 + 1, oder 9007199254740991)
Number.MAX_SAFE_INTEGER Maximale sichere Ganze Zahl in JavaScript (+2^53 1, oder +9007199254740991)
Methode Beschreibung
Number.parseFloat() Parst ein String-Argument und gibt eine Gleitkommazahl zurck. Entspricht der globalen parseFloat()-Funktion.
Number.parseInt() Parst ein String-Argument und gibt ein Integer der angegebenen Basis zurck. Entspricht der globalen parseInt()-Funktion.
Number.isFinite() Bestimmt, ob der bergebene Wert eine endliche Zahl ist.
Number.isInteger() Bestimmt, ob der bergebene Wert ein Integer ist.
Number.isNaN() Bestimmt, ob der bergebene Wert NaN ist. Eine robustere Version der ursprnglichen globalen isNaN().
Number.isSafeInteger() Bestimmt, ob der angegebene Wert eine sichere ganze Zahl ist.

Das Number-Prototyp stellt Methoden zum Abrufen von Informationen von Number-Objekten in verschiedenen Formaten bereit. Die folgende Tabelle fasst die Methoden von Number.prototype zusammen.

Methode Beschreibung
toExponential() Gibt einen String zurck, der die Zahl in Exponentialschreibweise darstellt.
toFixed() Gibt einen String zurck, der die Zahl in Festkommaschreibweise darstellt.
toPrecision() Gibt einen String zurck, der die Zahl mit einer spezifizierten Genauigkeit in Festkommaschreibweise darstellt.

Math-Objekt

Das eingebaute Math-Objekt verfgt ber Eigenschaften und Methoden fr mathematische Konstanten und Funktionen. Zum Beispiel hat die Math-Eigenschaft PI den Wert von Pi (3.141), den Sie in einer Anwendung folgendermaen verwenden wrden:

js
Math.PI;

Ebenso sind Standardmathematische Funktionen Methoden von Math. Dazu gehren trigonometrische, logarithmische, exponentielle und andere Funktionen. Wenn Sie beispielsweise die trigonometrische Funktion Sinus verwenden mchten, wrden Sie schreiben:

js
Math.sin(1.56);

Beachten Sie, dass alle trigonometrischen Methoden von Math Argumente in Bogenma verwenden.

Die folgende Tabelle fasst die Methoden des Math-Objekts zusammen.

Methoden von Math
Methode Beschreibung
abs() Absolutwert
sin(), cos(), tan() Standard-trigonometrische Funktionen; mit dem Argument im Bogenma.
asin(), acos(), atan(), atan2() Inverse trigonometrische Funktionen; Rckgabewerte im Bogenma.
sinh(), cosh(), tanh() Hyperbolische Funktionen; Argument im hyperbolischen Winkelma.
asinh(), acosh(), atanh() Inverse hyperbolische Funktionen; Rckgabewerte im hyperbolischen Winkelma.

pow(), exp(), expm1(), log(), log10(), log1p(), log2()

Exponentielle und logarithmische Funktionen.
floor(), ceil() Gibt den grten/kleinsten Integer zurck, der kleiner/grer oder gleich einen Argument ist.
min(), max() Gibt den minimalen oder maximalen (jeweils) Wert einer durch Komma getrennten Liste von Zahlen als Argumente zurck.
random() Gibt eine Zufallszahl zwischen 0 und 1 zurck.
round(), fround(), trunc(), Rundungs- und Trunkierungsfunktionen.
sqrt(), cbrt(), hypot() Quadratwurzel, Kubikwurzel, Quadratwurzel der Summe der quadratischen Argumente.
sign() Das Vorzeichen einer Zahl, um anzuzeigen, ob die Zahl positiv, negativ oder null ist.
clz32(),
imul()
Anzahl der fhrenden Nullbits in der 32-Bit-Binrdarstellung.
Das Ergebnis der C-hnlichen 32-Bit-Multiplikation der beiden Argumente.

Im Gegensatz zu vielen anderen Objekten erstellen Sie niemals ein eigenes Math-Objekt. Sie verwenden immer das eingebaute Math-Objekt.

BigInts

Ein Manko von Zahlenwerten ist, dass sie nur 64 Bit umfassen. In der Praxis knnen sie aufgrund der Verwendung des IEEE 754-Codings keine ganze Zahl genau darstellen, die grer als Number.MAX_SAFE_INTEGER (was 253 - 1 ist) ist. Um das Bedrfnis nach der Codierung von Binrdaten zu lsen und mit anderen Sprachen, die groe Ganzzahlen wie i64 (64-Bit-Ganzzahlen) und i128 (128-Bit-Ganzzahlen) bieten, zu interagieren, bietet JavaScript einen weiteren Datentyp zur Darstellung von beliebig groen Ganzzahlen: BigInt.

Ein BigInt kann als Ganzzahlenliteral definiert werden, das mit n postfixiert wird:

js
const b1 = 123n;
// Can be arbitrarily large.
const b2 = -1234567890987654321n;

BigInts knnen auch aus Zahlenwerten oder Zeichenfolgenwerten konstruiert werden, indem der BigInt Konstruktor verwendet wird.

js
const b1 = BigInt(123);
// Using a string prevents loss of precision, since long number
// literals don't represent what they seem like.
const b2 = BigInt("-1234567890987654321");

Konzeptionell ist ein BigInt einfach eine beliebig lange Folge von Bits, die eine ganze Zahl kodiert. Sie knnen sicher alle arithmetischen Operationen durchfhren, ohne Przision zu verlieren oder ber-/Unterlufe zu verursachen.

js
const integer = 12 ** 34; // 4.9222352429520264e+36; only has limited precision
const bigint = 12n ** 34n; // 4922235242952026704037113243122008064n

Im Vergleich zu Zahlen liefern BigInt-Werte eine hhere Przision bei der Darstellung groer ganzer Zahlen; sie knnen jedoch keine Gleitkommazahlen darstellen. Zum Beispiel wrde eine Division auf null gerundet:

js
const bigintDiv = 5n / 2n; // 2n, because there's no 2.5 in BigInt

Math-Funktionen knnen nicht auf BigInt-Werten verwendet werden; sie funktionieren nur mit Zahlen.

Die Auswahl zwischen BigInt und Number hngt von Ihrem Anwendungsfall und dem Bereich Ihrer Eingabe ab. Die Przision von Zahlen sollte in der Lage sein, die meisten alltglichen Aufgaben bereits zu bewltigen, und BigInts sind am besten zum Umgang mit Binrdaten geeignet.

Lesen Sie mehr darber, was Sie mit BigInt-Werten tun knnen, im Abschnitt Ausdrcke und Operatoren oder in der BigInt-Referenz.

Zeichenfolgen

Der JavaScript-String-Typ wird verwendet, um Textdaten darzustellen. Er ist eine Menge von "Elementen" von 16-Bit vorzeichenlosen Integer-Werten (UTF-16-Codeeinheiten). Jedes Element im String nimmt eine Position im String ein. Das erste Element befindet sich an Index 0, das nchste an Index 1, und so weiter. Die Lnge eines Strings ist die Anzahl der Elemente darin. Sie knnen Zeichenfolgen mithilfe von Zeichenfolgenliteralen oder Zeichenfolgenobjekten erstellen.

Zeichenfolgenliterale

Sie knnen Zeichenfolgen im Quellcode unter Verwendung von einfachen oder doppelten Anfhrungszeichen deklarieren:

js
'foo'
"bar"

Innerhalb eines Zeichenfolgenliterals knnen die meisten Zeichen wrtlich eingegeben werden. Die einzigen Ausnahmen sind der Rckwrtsschrgstrich (\, der eine Escape-Sequenz startet), das Anfhrungszeichen, das zur Umfassung des Strings verwendet wird und ihn beendet, und das Zeilenumbruchzeichen, das einen Syntaxfehler verursacht, wenn es nicht von einem Rckwrtsschrgstrich gefolgt wird.

Komplexere Zeichenfolgen knnen mithilfe von Escape-Sequenzen erstellt werden:

Hexadezimale Escape-Sequenzen

Die Zahl nach \x wird als hexadezimale Zahl interpretiert.

js
"\xA9" // ""

Unicode-Escape-Sequenzen

Die Unicode-Escape-Sequenzen erfordern mindestens vier hexadezimale Ziffern nach \u.

js
"\u00A9" // ""

Unicode-Codepoint-Escapes

Mit Unicode-Codepoint-Escapes kann jedes Zeichen unter Verwendung hexadezimaler Zahlen so maskiert werden, dass es mglich ist, Unicode-Codepunkte bis zu 0x10FFFF zu verwenden. Mit den vierstelligen Unicode-Escapes ist es oft notwendig, die Surrogathlften separat zu schreiben, um das gleiche Ergebnis zu erzielen.

Siehe auch String.fromCodePoint() oder String.prototype.codePointAt().

js
"\u{2F804}"

// the same with simple Unicode escapes
"\uD87E\uDC04"

String-Objekt

Sie knnen Methoden direkt auf einem Zeichenfolgenwert aufrufen:

js
console.log("hello".toUpperCase()); // HELLO

Die folgenden Methoden sind auf String-Werten verfgbar:

Beim Arbeiten mit Zeichenfolgen gibt es zwei weitere Objekte, die wichtige Funktionen zur Zeichenfolgenmanipulation bereitstellen: RegExp und Intl. Sie werden in Regulren Ausdrcken und Internationalisierung vorgestellt.

Template-Literale

Template-Literale sind Zeichenfolgenliterale, die eingebettete Ausdrcke ermglichen. Sie knnen sie fr mehrzeilige Zeichenfolgen und Stringinterpolation verwenden.

Template-Literale werden durch Backticks (Gravis) anstelle von doppelten oder einfachen Anfhrungszeichen eingeschlossen. Template-Literale knnen Platzhalter enthalten, die durch das Dollarzeichen und geschweifte Klammern (${expression}) angezeigt werden.

Mehrzeilige Zeichenfolgen

Alle in den Quellcode eingefgten Zeilenumbrche sind Teil des Template-Literals. Bei normalen Zeichenfolgen mssten Sie die folgende Syntax verwenden, um mehrzeilige Zeichenfolgen zu erhalten:

js
console.log(
  "string text line 1\n\
string text line 2",
);
// "string text line 1
// string text line 2"

Um denselben Effekt mit mehrzeiligen Zeichenfolgen zu erzielen, knnen Sie jetzt schreiben:

js
console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"

Eingebettete Ausdrcke

Um Ausdrcke innerhalb normaler Zeichenfolgen einzubetten, wrden Sie die folgende Syntax verwenden:

js
const five = 5;
const ten = 10;
console.log(
  "Fifteen is " + (five + ten) + " and not " + (2 * five + ten) + ".",
);
// "Fifteen is 15 and not 20."

Mit Template-Literalen knnen Sie nun das syntaktische Zucker nutzen, um solche Ersetzungen lesbarer zu machen:

js
const five = 5;
const ten = 10;
console.log(`Fifteen is ${five + ten} and not ${2 * five + ten}.`);
// "Fifteen is 15 and not 20."

Weitere Informationen finden Sie unter Template-Literale im JavaScript-Referenz.


Web Proxy Viewer  |  New URL  |  Original Page