Das erste Feature für ECMAScript 2021 steht fest. Im Juni-Meeting des TC39 wurde String.prototype.replaceAll
auf Stufe 4 der Standardisierung gesetzt. Damit gilt das Proposal als fertiggestellt. Es sind keine Änderungen an der Implementierung mehr vorgesehen, bevor es im kommenden Jahr in die Spezifikation eingeht. Fertige Proposals werden meist schnell von den großen Browser-Herstellern und den Entwicklern wichtiger Tools adaptiert. Warten bis zur Veröffentlichung der Spezifikation muss man also meistens nicht, um das neue Feature nutzen zu können. So auch bei String.prototype.replaceAll
: Wie der Seite „Can I use“ zu entnehmen ist, wird der Neuzugang für ECMAScript 2021 bereits von Firefox 77+, Chrome 85+, Safari 13.1+ und Safari für iOS ab v13.4 unterstützt.
Was ist String.prototype.replaceAll?
String.prototype.replaceAll
ergänzt das bereits bekannte String.prototype.replace
und verwendet den gleichen Aufbau: String.prototype.replaceAll(searchValue, replaceValue)
. Unterschiedlich verhalten sich die Methoden natürlich in Bezug auf die Bearbeitung von Strings, wie der Name bereits besagt. Die neu eingeführte Methode ersetzt alle Instanzen des searchValue
. Bei nicht globalen regulären Ausdrücken funktioniert das jedoch nicht. Da keine globale Definition vorgenommen wurde, wird hier standardmäßig eine Exception geworfen, da die neue Methode nicht mit dieser Definition vereinbar ist. Detaillierte Informationen zur Syntax und den erlaubten Parametern können der MDN-Dokumentation entnommen werden.
ECMAScript 2021: Weitere mögliche Features
Ab dem 20. Juli tritt das TC39 erneut zusammen. Auf der Agenda für das Meeting stehen bereits jetzt drei Proposals, die Kandidaten für die Spezifikation 2021 sind. Dazu gehört die Standardisierung von Promise.any
mit AggregateError
. Weitere Informationen zur Motivation dahinter können dem Proposal entnommen werden. Ebenfalls als Kandidat für Stufe 4 geführt wird das WeakRef-Proposal, das zwei Funktionalitäten in ECMAScript standardisieren soll. Die Klasse WeakRef
soll für schwache Referenzen auf Objekte genutzt werden, die Klasse FinalizationRegistry
erlaubt es, nutzerdefinierte Finalizer nach der Garbage Collection von Objekten auszuführen. Die Autoren des Proposals weisen jedoch drauf hin, dass es sich um fortgeschrittene Funktionen handle, die nicht ohne weiteres genutzt werden sollten. Für Entwickler, die dennoch damit arbeiten möchten, steht ein Referenz-Dokument zur Verfügung.
Das dritte Proposal, das derzeit zur Diskussion über eine Fertigstellung vorgesehen ist, will Logical Operators und Assignment Expressions mit einander kombinieren.
Alle drei Proposals haben die Tests der offiziellen ECMAScript Test Suite bestanden. Ob sie auf Stufe 4 gesetzt werden, wird davon abhängen, ob im Rahmen der praktischen Anwendungstests bei Browser- und Tool-Herstellern noch Probleme mit den Implementierungen aufgetreten sind.
Bis zum 10. Juli können weitere Proposals zur Diskussion im nächsten Meeting des TC39 vorgeschlagen werden. Auch danach ist das Feature-Set für ECMAScript 2021 natürlich nicht abgeschlossen, sondern kann noch bis Anfang 2021 wachsen. ECMAScript 2021 wird im Sommer 2021 erscheinen. Derzeit gilt ECMAScript 2019 als noch aktuelle Fassung der Spezifikation. ECMAScript 2020 sollte diese jedoch in Kürze ablösen.
Hirnrissiger Unsinn an dem man mal wieder sieht wie kaputt diese Sprache ist.
Python: somestring.replace(old, new, count) # seit 1992