String: length
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Dielength
Eigenschaft einesString
Wertes enthält die Länge des Strings in UTF-16 Codeeinheiten.
Probieren Sie es aus
const str = "Life, the universe and everything. Answer:";console.log(`${str} ${str.length}`);// Expected output: "Life, the universe and everything. Answer: 42"
Wert
Eine nicht-negative ganze Zahl.
Eigenschaften vonString: length | |
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beschreibung
Diese Eigenschaft gibt die Anzahl der Codeeinheiten im String zurück. JavaScript verwendet dieUTF-16 Kodierung, wobei jedes Unicode-Zeichen als eine oder zwei Codeeinheiten kodiert werden kann. Daher kann es vorkommen, dass der vonlength
zurückgegebene Wert nicht mit der tatsächlichen Anzahl der Unicode-Zeichen im String übereinstimmt. Bei gängigen Schriftarten wie Latein, Kyrillisch, bekannten CJK-Zeichen usw. sollte dies kein Problem darstellen, aber wenn Sie mit bestimmten Schriftarten arbeiten, wie Emojis,mathematischen Symbolen oder seltenen chinesischen Zeichen, müssen Sie möglicherweise den Unterschied zwischen Codeeinheiten und Zeichen berücksichtigen.
Die Sprachspezifikation verlangt, dass Strings eine maximale Länge von 253 - 1 Elementen haben, was die Obergrenze fürpräzise Ganzzahlen darstellt. Ein String mit dieser Länge würde jedoch 16384TiB Speicher benötigen, was in kein vernünftiges Gerätespeicher passt, daher tendieren Implementierungen dazu, die Grenze zu senken, was erlaubt, dass die Länge des Strings in einer 32-Bit-Ganzzahl bequem gespeichert werden kann.
- In V8 (verwendet von Chrome und Node) beträgt die maximale Länge 229 - 24 (~1GiB). Auf 32-Bit-Systemen beträgt die maximale Länge 228 - 16 (~512MiB).
- In Firefox beträgt die maximale Länge 230 - 2 (~2GiB). Vor Firefox 65 betrug die maximale Länge 228 - 1 (~512MiB).
- In Safari beträgt die maximale Länge 231 - 1 (~4GiB).
Wenn Sie mit großen Strings in anderen Kodierungen (wie UTF-8-Dateien oder Blobs) arbeiten, beachten Sie, dass beim Laden der Daten in einen JS-String die Kodierung immer UTF-16 wird. Die Größe des Strings kann sich von der Größe der Quelldatei unterscheiden.
const str1 = "a".repeat(2 ** 29 - 24); // Successconst str2 = "a".repeat(2 ** 29 - 23); // RangeError: Invalid string lengthconst buffer = new Uint8Array(2 ** 29 - 24).fill("a".codePointAt(0)); // This buffer is 512MiB in sizeconst str = new TextDecoder().decode(buffer); // This string is 1GiB in size
Für einen leeren String istlength
0.
Die statische EigenschaftString.length
ist nicht mit der Länge von Strings verwandt. Sie ist dieArity derString
Funktion (grob gesagt, die Anzahl ihrer formalen Parameter) und beträgt 1.
Dalength
Codeeinheiten anstelle von Zeichen zählt, können Sie, wenn Sie die Anzahl der Zeichen erhalten möchten, zuerst den String mit seinemIterator aufteilen, der zeichenweise iteriert:
function getCharacterLength(str) { // The string iterator that is used here iterates over characters, // not mere code units return [...str].length;}console.log(getCharacterLength("A\uD87E\uDC04Z")); // 3
Wenn Sie Zeichen nachGrapheme-Clustern zählen möchten, verwenden SieIntl.Segmenter
. Sie können zuerst den String, den Sie aufteilen möchten, an diesegment()
Methode übergeben und dann über das zurückgegebeneSegments
Objekt iterieren, um die Länge zu ermitteln:
function getGraphemeCount(str) { const segmenter = new Intl.Segmenter("en-US", { granularity: "grapheme" }); // The Segments object iterator that is used here iterates over characters in grapheme clusters, // which may consist of multiple Unicode characters return [...segmenter.segment(str)].length;}console.log(getGraphemeCount("👨👩👧👧")); // 1
Beispiele
Grundlegende Verwendung
const x = "Mozilla";const empty = "";console.log(`${x} is ${x.length} code units long`);// Mozilla is 7 code units longconsole.log(`The empty string has a length of ${empty.length}`);// The empty string has a length of 0
Strings mit einer Länge, die nicht der Anzahl der Zeichen entspricht
const emoji = "😄";console.log(emoji.length); // 2console.log([...emoji].length); // 1const adlam = "𞤲𞥋𞤣𞤫";console.log(adlam.length); // 8console.log([...adlam].length); // 4const formula = "∀𝑥∈ℝ,𝑥²≥0";console.log(formula.length); // 11console.log([...formula].length); // 9
Zuordnung zur Länge
Da String ein primitiver Datentyp ist, hat der Versuch, einen Wert derlength
-Eigenschaft eines Strings zuzuweisen, keine beobachtbare Wirkung und wird imStrict Mode einen Fehler werfen.
const myString = "bluebells";myString.length = 4;console.log(myString); // "bluebells"console.log(myString.length); // 9
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-properties-of-string-instances-length |
Browser-Kompatibilität
Siehe auch
MDN-Feedback-Box
Diese Seite wurde automatisch aus dem Englischen übersetzt.