String.prototype.isWellFormed()

Baseline 2023
Newly available

Since October 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die isWellFormed() Methode der String Objekte gibt einen Boolean zurück, der anzeigt, ob dieser String einsame Surrogate enthält oder nicht (siehe Lone Surrogates).

Syntax

js
isWellFormed()

Parameter

Keine.

Rückgabewert

Gibt true zurück, wenn dieser String keine einsamen Surrogate enthält, andernfalls false.

Beschreibung

Strings in JavaScript sind UTF-16 codiert. Die UTF-16-Kodierung hat das Konzept der Surrogat-Paare, das im Abschnitt UTF-16-Zeichen, Unicode-Codepunkte und Grapheme-Cluster ausführlich eingeführt wird.

isWellFormed() ermöglicht es Ihnen, zu testen, ob ein String wohlgeformt ist (d.h. keine einsamen Surrogate enthält). Im Vergleich zu einer benutzerdefinierten Implementierung ist isWellFormed() effizienter, da Engines direkt auf die interne Darstellung von Strings zugreifen können. Wenn Sie einen String in einen wohlgeformten String umwandeln müssen, verwenden Sie die Methode toWellFormed(). isWellFormed() ermöglicht es Ihnen, fehlerhafte Strings anders zu behandeln als wohlgeformte, zum Beispiel durch das Werfen eines Fehlers oder durch Markierung als ungültig.

Beispiele

Verwendung von isWellFormed()

js
const strings = [
  // Lone leading surrogate
  "ab\uD800",
  "ab\uD800c",
  // Lone trailing surrogate
  "\uDFFFab",
  "c\uDFFFab",
  // Well-formed
  "abc",
  "ab\uD83D\uDE04c",
];

for (const str of strings) {
  console.log(str.isWellFormed());
}
// Logs:
// false
// false
// false
// false
// true
// true

Vermeidung von Fehlern in encodeURI()

encodeURI wirft einen Fehler, wenn der übergebene String nicht wohlgeformt ist. Dies kann vermieden werden, indem isWellFormed() verwendet wird, um den String zu testen, bevor er an encodeURI() übergeben wird.

js
const illFormed = "https://example.com/search?q=\uD800";

try {
  encodeURI(illFormed);
} catch (e) {
  console.log(e); // URIError: URI malformed
}

if (illFormed.isWellFormed()) {
  console.log(encodeURI(illFormed));
} else {
  console.warn("Ill-formed strings encountered."); // Ill-formed strings encountered.
}

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-string.prototype.iswellformed

Browser-Kompatibilität

Siehe auch