[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features [Back]  [Original]

Veraltete und obsolet gewordene Funktionen - 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

Veraltete und obsolet gewordene Funktionen

Diese Seite listet JavaScript-Funktionen auf, die als veraltet (d.h. noch verfgbar, aber fr die Entfernung geplant) und obsolet (d.h. nicht mehr nutzbar) gelten.

In diesem Artikel

Veraltete Funktionen

Diese veralteten Funktionen knnen noch verwendet werden, sollten jedoch mit Vorsicht verwendet werden, da sie nicht in allen JavaScript-Engines implementiert sein mssen. Sie sollten daran arbeiten, deren Verwendung aus Ihrem Code zu entfernen.

Einige dieser veralteten Funktionen sind im Abschnitt Anhang B der ECMAScript-Spezifikation aufgefhrt. Dieser Abschnitt wird als normativ optional beschrieben das heit, Webbrowser-Hosts mssen diese Funktionen implementieren, whrend Nicht-Web-Hosts dies mglicherweise nicht tun. Diese Funktionen sind wahrscheinlich stabil, da deren Entfernung Rckwrtskompatibilittsprobleme verursachen und ltere Websites beeintrchtigen wrde. (JavaScript hat das Designziel "das Web nicht kaputt machen".) Dennoch sind sie nicht plattformbergreifend tragbar und werden mglicherweise nicht von allen Analysetools untersttzt, daher wird geraten, sie nicht zu verwenden, wie die Einfhrung von Anhang B bemerkt:

Alle in diesem Anhang spezifizierten Sprachmerkmale und Verhaltensweisen weisen eine oder mehrere unerwnschte Eigenschaften auf und wrden ohne die Existenz von Altnutzungen aus dieser Spezifikation entfernt werden.

Programmierer sollten diese Merkmale und Verhaltensweisen beim Schreiben neuen ECMAScript-Codes nicht verwenden oder deren Existenz voraussetzen.

Einige andere, obwohl sie sich im Hauptteil der Spezifikation befinden, sind ebenfalls als normativ optional gekennzeichnet und sollten nicht als gegeben vorausgesetzt werden.

HTML-Kommentare

JavaScript-Quellcode, wenn er als Skripte geparst wird, erlaubt HTML-hnliche Kommentare, als ob das Skript Teil eines <script> Tags wre.

Folgendes ist gltiges JavaScript, wenn es in einem Webbrowser (oder Node.js, das die V8-Engine von Chrome nutzt) ausgefhrt wird:

js
<!-- comment
console.log("a"); <!-- another comment
console.log("b");
--> More comment
// Logs "a" and "b"

<!-- und --> verhalten sich beide wie //, d.h. sie starten Zeilenkommentare. --> ist nur am Anfang einer Zeile gltig (um Verwirrung mit einem Postfix-Abzugsoperator gefolgt von einem Grer-als-Operator zu vermeiden), whrend <!-- berall in der Zeile vorkommen kann.

RegExp

Die folgenden Eigenschaften sind veraltet. Dies beeinflusst nicht ihre Verwendung in Ersatz-Strings:

$1$9

Eingeschlossene Substring-bereinstimmungen, falls vorhanden.

input, $_

Der String, gegen den ein regulrer Ausdruck abgeglichen wird.

lastMatch, $&

Der zuletzt abgeglichene Substring.

lastParen, $+

Die zuletzt eingeschlossene Substring-bereinstimmung, falls vorhanden.

leftContext, $`

Der Substring, der der letzten bereinstimmung vorausgeht.

rightContext, $'

Der Substring, der der letzten bereinstimmung folgt.

Warnung: Vermeiden Sie die Verwendung dieser statischen Eigenschaften, da sie Probleme im Umgang mit externem Code verursachen knnen!

Die Methode compile() ist veraltet. Erstellen Sie stattdessen eine neue RegExp-Instanz.

Die folgenden Regex-Syntaxen sind veraltet und nur im Unicode-unaware Modus verfgbar. Im Unicode-aware Modus sind sie alle Syntaxfehler:

  • Lookahead assertions knnen Quantifier haben.
  • Backreferences, die sich nicht auf eine existierende Erfassungsgruppe beziehen, werden zu Legacy-Oktalescape-sequenzen.
  • In Zeichenklassen, Zeichenbereiche, bei denen eine Grenze eine Zeichenklasse ist, machen das - zu einem literalen Zeichen.
  • Eine Escape-Sequenz, die nicht erkannt wird, wird zu einem "Identitts-Escape".
  • Escape-Sequenzen innerhalb von Zeichenklassen der Form \cX, wobei X eine Zahl oder _ ist, werden auf die gleiche Weise decodiert wie diejenigen mit ASCII-Buchstaben: \c0 ist genauso wie \cP, wenn mod 32 genommen wird. Auerdem, wenn die Form \cX irgendwo auftritt, wo X nicht eines der erkannten Zeichen ist, wird der Backslash als ein literales Zeichen behandelt.
  • Die Sequenz \k innerhalb eines Regexes, der keine benannten Erfassungsgruppen hat, wird als ein Identitts-Escape betrachtet.
  • Die Syntaxzeichen ], {, und } knnen literal unescaped erscheinen, wenn sie nicht als Ende einer Zeichenklasse oder als Quantifizierer-Delimitatoren interpretiert werden knnen.

Function

  • Die caller-Eigenschaft von Funktionen und die arguments.callee-Eigenschaft sind veraltet und in strengem Modus nicht verfgbar.
  • Anstelle des Zugriffs auf arguments als Eigenschaft einer Funktion sollten Sie das arguments-Objekt innerhalb von Funktionsabschlssen verwenden.

Object

String

Date

Escape-Sequenzen

Anweisungen

Die with-Anweisung ist veraltet und im strengen Modus nicht verfgbar.

Initialisierer in var-Deklarationen von for...in-Schleifen sind veraltet und erzeugen Syntaxfehler im strengen Modus. Die Initialisiererausdrcke werden ausgewertet und der Variablen zugeordnet, aber der Wert wrde bei der ersten Schleifeniteration sofort neu zugeordnet werden.

Normalerweise kann der catch-Block einer try...catch-Anweisung keine Variablendeklaration mit dem gleichen Namen enthalten wie die im catch() gebundenen Variablen. Eine erweiterte Grammatik erlaubt es dem catch-Block, eine mit var deklarierte Variable mit dem gleichen Namen wie der im catch gebundene Bezeichner zu enthalten, aber nur, wenn die catch-Bindung ein einfacher Bezeichner ist und kein Destructuring-Muster. Diese Variable wird jedoch nur auf den im catch gebundenen Bezeichner initialisiert und zugewiesen, anstatt auf die oberste Gltigkeitsbereichsvariable, und das Verhalten knnte verwirrend sein.

js
var a = 2;
try {
  throw new Error();
} catch (a) {
  var a = 1; // This 1 is assigned to the caught `a`, not the outer `a`.
}
console.log(a); // 2

try {
  throw new Error();
  // Note: identifier changed to `err` to avoid conflict with
  // the inner declaration of `a`.
} catch (err) {
  var a = 1; // This 1 is assigned to the upper-scope `a`.
}
console.log(a); // 1

Dies ist im Anhang B der Spezifikation aufgefhrt und daher mglicherweise nicht berall implementiert. Vermeiden Sie Namenskonflikte zwischen dem im catch gebundenen Bezeichner und Variablen, die im catch-Block deklariert sind.

Obsolete Funktionen

Diese obsoleten Funktionen wurden vollstndig aus JavaScript entfernt und knnen ab der angegebenen Version von JavaScript nicht mehr verwendet werden.

RegExp

Die folgenden sind jetzt Eigenschaften von RegExp-Instanzen, nicht mehr des RegExp-Konstruktors:

Eigenschaft Beschreibung
global Ob der regulre Ausdruck gegen alle mglichen bereinstimmungen in einem String getestet wird oder nur gegen die erste.
ignoreCase Ob beim Versuch einer bereinstimmung in einem String die Gro-/Kleinschreibung ignoriert wird.
lastIndex Der Index, bei dem mit dem nchsten Abgleich begonnen werden soll.
multiline (auch ber RegExp.$*) Ob in String-bereinstimmungen ber mehrere Zeilen hinweg gesucht werden soll.
source Der Text des Musters.

Die Methode valueOf() ist nicht mehr speziell fr RegExp. Sie nutzt Object.prototype.valueOf(), das sich selbst zurckgibt.

Function

  • Die arity-Eigenschaft von Funktionen ist obsolet. Verwenden Sie stattdessen length.

Object

Eigenschaft Beschreibung Alternative
__count__ Gibt die Anzahl der direkt verfgbaren aufzhlbaren Eigenschaften auf einem benutzerdefinierten Objekt zurck. Object.keys()
__parent__ Verweist auf den Kontext eines Objekts. Keine direkte Ersatzmethode
__iterator__ Wurde mit Legacy-Iteratoren verwendet. Symbol.iterator und die neuen Iteration-Protokolle
__noSuchMethod__ Eine Methode, die aufgerufen wird, wenn eine nicht vorhandene Eigenschaft als Methode aufgerufen wird. Proxy
Object.prototype.eval() Wertet einen JavaScript-Code-String im Kontext des angegebenen Objekts aus. Keine direkte Ersatzmethode
Object.observe() Asynchrones Beobachten von nderungen an einem Objekt. Proxy
Object.unobserve() Entfernt Beobachter. Proxy
Object.getNotifier() Erzeugt ein Notifier-Objekt, das es ermglicht, eine nderungsbeobachtung mit Object.observe() synthetisch auszulsen. Keine direkte Ersatzmethode
Object.prototype.watch() Hngt einen Callback-Handler an eine Eigenschaft, der aufgerufen wird, wenn der Eigenschaft zugewiesen wird. Proxy
Object.prototype.unwatch() Entfernt Watch-Handler von einer Eigenschaft. Proxy

String

  • Nicht standardisierte String-generische Methoden wie String.slice(myStr, 0, 12), String.replace(myStr, /\./g, "!") usw. wurden in Firefox 1.5 (JavaScript 1.6) eingefhrt, in Firefox 53 als veraltet erklrt und in Firefox 68 entfernt. Sie knnen Methoden auf String.prototype zusammen mit Function.call verwenden.
  • String.prototype.quote wurde in Firefox 37 entfernt.
  • Nicht standardisierte flags-Parameter in String.prototype.search, String.prototype.match, und String.prototype.replace sind obsolet.

WeakMap

  • WeakMap.prototype.clear() wurde in Firefox 20 hinzugefgt und in Firefox 46 entfernt. Es ist nicht mglich, alle Schlssel in einem WeakMap zu durchlaufen.

Date

  • Date.prototype.toLocaleFormat(), das ein Formatstring im gleichen Format verwendete, das von der Funktion strftime() in C erwartet wird, ist obsolet. Verwenden Sie toLocaleString() oder Intl.DateTimeFormat.

Array

  • Nicht standardisierte Array-generische Methoden wie Array.slice(myArr, 0, 12), Array.forEach(myArr, myFn) usw. wurden in Firefox 1.5 (JavaScript 1.6) eingefhrt, in Firefox 68 als veraltet erklrt und in Firefox 71 entfernt. Sie knnen Methoden auf Array.prototype zusammen mit Function.call verwenden.
Eigenschaft Beschreibung Alternative
Array.observe() Asynchrones Beobachten von nderungen an Arrays. Proxy
Array.unobserve() Entfernt Beobachter. Proxy

Number

  • Number.toInteger() ist obsolet. Verwenden Sie statt dessen Math.floor, Math.round oder andere Methoden.

Proxy

  • Proxy.create und Proxy.createFunction sind obsolet. Verwenden Sie den Proxy()-Konstruktor.
  • Die folgenden Traps sind obsolet:

ParallelArray

  • ParallelArray ist obsolet.

Anweisungen

  • for each...in ist obsolet. Verwenden Sie for...of.
  • Let-Blcke und Let-Ausdrcke sind obsolet.
  • Ausdrckungsabschlsse (function () 1 als Kurzform von function () { return 1; }) sind obsolet. Verwenden Sie regulre Funktionen oder Pfeilfunktionen.

Abrufen des Quelltexts

Die toSource()-Methoden von Arrays, Zahlen, Strings usw. und die globale Funktion uneval() sind obsolet. Verwenden Sie toString(), oder schreiben Sie Ihre eigene Serialisierungsmethode.

Legacy-Generator und -Iterator

Legacy-Generator-Funktionsanweisungen und Legacy-Generator-Funktionsausdrcke sind entfernt. Die Syntax der Legacy-Generator-Funktion verwendet das function-Schlsselwort, das automatisch zu einer Generator-Funktion wird, wenn es eine oder mehrere yield-Ausdrcke im Krper gibt dies ist jetzt ein Syntaxfehler. Verwenden Sie function*-Anweisungen und function*-Ausdrcke anstelle dessen.

Array-Konstruktionen und Generator-Konstruktionen sind entfernt.

js
// Legacy array comprehensions
[for (x of iterable) x]
[for (x of iterable) if (condition) x]
[for (x of iterable) for (y of iterable) x + y]

// Legacy generator comprehensions
(for (x of iterable) x)
(for (x of iterable) if (condition) x)
(for (x of iterable) for (y of iterable) x + y)

Firefox implementierte vor Version 26 ein weiteres Iterationsprotokoll, das dem Standard Iterators-Protokoll hnelt. Ein Objekt ist ein Legacy-Iterator, wenn es eine next()-Methode implementiert, die bei jedem Aufruf einen Wert geliefert und ein StopIteration-Objekt am Ende der Iteration ausgelst hat. Dieses Legacy-Iterator-Protokoll unterscheidet sich vom Standard-Iterator-Protokoll:

  • Der Wert wurde direkt als Rckgabewert der next()-Aufrufe zurckgegeben, anstatt der value-Eigenschaft des IteratorResult-Objekts.
  • Die Beendigung der Iteration wurde durch das Auswerfen eines StopIteration-Objekts erreicht, anstatt durch die done-Eigenschaft des IteratorResult-Objekts.

Diese Funktion, zusammen mit dem StopIteration globalen Konstruktor, wurde in Firefox 58+ entfernt. Fr zukunftsorientierte Verwendungen sollten Sie die for...of-Schleifen und das Iterator-Protokoll nutzen.

Sharp-Variablen

Sharp-Variablen sind obsolet. Verwenden Sie stattdessen temporre Variablen, um zirkulre Strukturen zu erstellen.


Web Proxy Viewer  |  New URL  |  Original Page