Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Seite listet Funktionen von JavaScript auf, die veraltet (d.h. noch verfügbar, aber zur Entfernung vorgesehen) und obsolet sind (d.h. nicht mehr verwendbar).
Diese veralteten Funktionen können noch verwendet werden, sollten jedoch mit Vorsicht genossen werden, da sie nicht von jedem JavaScript-Engine implementiert werden müssen. Sie sollten daran arbeiten, ihre Verwendung aus Ihrem Code zu entfernen.
Einige dieser veralteten Funktionen sind im Anhang B der ECMAScript-Spezifikation aufgeführt. Dieser Abschnitt wird als normativ optional beschrieben — das heißt, Hosts von Webbrowsern müssen diese Funktionen implementieren, während Nicht-Web-Hosts dies möglicherweise nicht tun. Diese Funktionen sind wahrscheinlich stabil, da ihre Entfernung Rückwärtskompatibilitätsprobleme verursachen und alte Websites beschädigen würde. (JavaScript hat das Designziel "Das Web nicht zerstören".) Trotzdem sind sie nicht plattformübergreifend portabel und werden möglicherweise nicht von allen Analysetools unterstützt, daher wird Ihnen geraten, sie nicht zu verwenden, wie die Einführung von Anhang B besagt:
… Alle in diesem Anhang spezifizierten Sprachfunktionen und Verhaltensweisen weisen eine oder mehrere unerwünschte Eigenschaften auf und würden ohne die Existenz von Altnutzung aus dieser Spezifikation entfernt werden. …
… Programmierer sollten diese Funktionen und Verhaltensweisen nicht verwenden oder deren Existenz beim Schreiben von neuem ECMAScript-Code annehmen. …
Einige andere, die im Hauptteil der Spezifikation stehen, sind ebenfalls als normativ optional gekennzeichnet und sollten nicht als gegeben vorausgesetzt werden.
JavaScript-Quellcode, sofern er als Skripte geparst wird, erlaubt HTML-ähnliche Kommentare, als ob das Skript Teil eines <script>-Tags ist.
Das folgende ist gültiges JavaScript, wenn es in einem Webbrowser (oder Node.js, das die V8-Engine von Chrome verwendet) ausgeführt wird:
<!-- und --> wirken beide wie //, d.h. als Beginn von Zeilenkommentaren. --> ist nur am Beginn einer Zeile gültig (um Mehrdeutigkeiten mit einem nachfolgenden größer-als-Operator zu vermeiden), während <!-- überall in der Zeile vorkommen kann.
Die folgenden Eigenschaften sind veraltet. Dies beeinflusst nicht ihre Verwendung in Ersetzungs-Strings:
$1–$9Klammerausdrücke, wenn vorhanden.
input, $_Der String, gegen den ein regulärer Ausdruck abgeglichen wird.
lastMatch, $&Der zuletzt gefundene Teilstring.
lastParen, $+Der letzte Klammerausdruck, falls vorhanden.
leftContext, $`Der Teilstring, der dem jüngsten Match voransteht.
rightContext, $'Der Teilstring, der dem jüngsten Match folgt.
Warnung: Vermeiden Sie die Verwendung dieser statischen Eigenschaften, da sie Probleme bei der Interaktion mit externem Code verursachen können!
Die Methode compile() ist veraltet. Konstruieren Sie stattdessen eine neue RegExp-Instanz.
Die folgenden Regex-Syntaxen sind veraltet und nur im Unicode-unaware Modus verfügbar. Im Unicode-bewussten Modus sind sie alle Syntaxfehler:
Die with-Anweisung ist veraltet und im strengen Modus nicht verfügbar.
Initialisierer in den var-Deklarationen von Schleifen-Headern for...in sind veraltet und erzeugen Syntaxfehler im strengen Modus. Der Initialisierungs-Ausdruck wird ausgewertet und der Variable zugewiesen, aber der Wert würde bei der ersten Iteration der Schleife sofort erneut zugewiesen werden.
Normalerweise kann der catch-Block einer try...catch-Anweisung keine Variablendeklaration mit demselben Namen wie die an catch() gebundenen Variablen enthalten. Eine erweiterte Grammatik ermöglicht es dem catch-Block, eine mit var deklarierte Variable mit demselben Namen wie der catch-gebundene Bezeichner zu enthalten, jedoch nur, wenn die catch-Bindung ein einfacher Bezeichner ist, kein Destrukturierungsmuster. Die Initialisierung und Zuweisung dieser Variablen würde jedoch nur auf den catch-gebundenen Bezeichner wirken, anstelle der übergeordneten Variablen, was verwirrend sein könnte.
Dies ist im Anhang B der Spezifikation aufgeführt und daher möglicherweise nicht überall implementiert. Vermeiden Sie Namenskonflikte zwischen dem catch-gebundenen Bezeichner und Variablen, die im catch-Block deklariert sind.
Diese obsoleten Funktionen wurden vollständig aus JavaScript entfernt und können nicht mehr in der angegebenen JavaScript-Version verwendet werden.
Die folgenden sind nun Eigenschaften von RegExp-Instanzen, nicht länger des RegExp-Konstruktors:
| global | Ob der reguläre Ausdruck auf alle möglichen Übereinstimmungen in einem String getestet wird oder nur auf die erste. |
| ignoreCase | Ob Groß- und Kleinschreibung bei einem Match in einem String ignoriert wird. |
| lastIndex | Der Index, bei dem das nächste Match startet. |
| multiline (auch über RegExp.$*) | Ob in Strings über mehrere Zeilen hinweg gesucht wird. |
| source | Der Text des Musters. |
Die valueOf()-Methode ist nicht mehr speziell für RegExp. Sie verwendet Object.prototype.valueOf(), welche das Objekt selbst zurückgibt.
| __count__ | Gibt die Anzahl der aufzählbaren Eigenschaften eines benutzerdefinierten Objekts zurück. | Object.keys() |
| __parent__ | Verweist auf den Kontext eines Objekts. | Kein direkter Ersatz |
| __iterator__ | Wird mit veralteten Iteratoren verwendet. | Symbol.iterator und die neuen Iteration-Standards |
| __noSuchMethod__ | Eine Methode, die aufgerufen wird, wenn eine nicht existente Eigenschaft als Methode aufgerufen wird. | Proxy |
| Object.prototype.eval() | Bewertet einen String mit JavaScript-Code im Kontext des spezifizierten Objekts. | Kein direkter Ersatz |
| Object.observe() | Asynchrones Beobachten von Änderungen an einem Objekt. | Proxy |
| Object.unobserve() | Entfernt Beobachter. | Proxy |
| Object.getNotifier() | Erstellt ein Benachrichtigungsobjekt, das ermöglicht, eine Änderungsbenachrichtigung mit Object.observe() synthetisch auszulösen. | Kein direkter Ersatz |
| Object.prototype.watch() | Fügt eine Handler-Funktion an eine Eigenschaft an, die aufgerufen wird, wenn der Eigenschaft ein Wert zugewiesen wird. | Proxy |
| Object.prototype.unwatch() | Entfernt Überwachungs-Handler von einer Eigenschaft. | Proxy |
| Array.observe() | Asynchrones Beobachten von Änderungen an Arrays. | Proxy |
| Array.unobserve() | Entfernt Beobachter. | Proxy |
Die toSource()-Methoden von Arrays, Zahlen, Strings usw. und die uneval()-globale Funktion sind obsolet. Verwenden Sie toString() oder schreiben Sie Ihre eigene Serialisierungsmethode.
Legacy-Generator-Funktionsanweisungen und -Ausdrücke wurden entfernt. Die Syntax der alten Generatorfunktionen nutzt das function-Schlüsselwort, welches automatisch zu einer Generatorfunktion wird, wenn es ein oder mehrere yield-Ausdrücke im Körper gibt — dies ist jetzt ein Syntaxfehler. Verwenden Sie function*-Anweisungen und function*-Ausdrücke stattdessen.
Array-Komprehensionen und Generator-Komprehensionen sind entfernt.
Firefox, vor Version 26, implementierte ein weiteres Iterato-Protokoll, das dem Standard Iterator-Protokoll ähnlich ist. Ein Objekt ist ein veralteter Iterator, wenn es eine next()-Methode implementiert, die bei jedem Aufruf einen Wert erzeugt und am Ende der Iteration ein StopIteration-Objekt auslöst. Dieses veraltete Iterator-Protokoll unterscheidet sich vom Standard-Iterator-Protokoll:
Diese Funktion wurde zusammen mit dem StopIteration-globale Konstruktor in Firefox 58+ entfernt. Für zukunftsgerichtete Verwendungen erwägen Sie, for...of-Schleifen und das Iterator-Protokoll zu verwenden.
Sharp-Variablen sind obsolet. Um zirkuläre Strukturen zu erstellen, verwenden Sie stattdessen temporäre Variablen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.