Reservierte Wörter

Geschätzte Lektüre: 7 Minuten 370 Ansichten

Lexikalische Struktur von JavaScript

Bevor wir zu den reservierten Wörtern kommen, müssen wir die lexikalische Struktur verstehen – die Bausteine, aus denen JavaScript-Code besteht:
• Tokens: Die kleinsten bedeutungstragenden Einheiten (z.B. Schlüsselwörter, Bezeichner, Literale)
• Bezeichner: Namen für Variablen, Funktionen, Parameter etc.
• Literale: Fest codierte Werte wie 42, „Hallo“, true
• Operatoren: Symbole wie +, -, *, /, ===
• Reservierte Wörter: Besondere Bezeichner mit festgelegter Bedeutung

Ein einfaches Beispiel:

let x = 10 + 5; // 'let', 'x', '=', '10', '+', '5', ';' sind alle Tokens

Reservierte Wörter in JavaScript

Reservierte Wörter (engl. „reserved words“) sind spezielle Bezeichner, die Teil der JavaScript-Sprachsyntax sind und nicht als Variablen-, Funktions- oder Parameternamen verwendet werden dürfen. Sie lassen sich in mehrere Kategorien einteilen:

Gegenwärtig verwendete Schlüsselwörter
Diese Wörter haben aktuell eine feste Bedeutung in JavaScript:

// Kontrollfluss
if (condition) { /* ... */ } else { /* ... */ }
for (let i = 0; i < 10; i++) { /* ... */ }
while (condition) { /* ... */ }
do { /* ... */ } while (condition);
switch (value) { case 1: /* ... */ break; }

// Variablendeklaration
var oldVariable;
let mutableVariable;
const constantValue;

// Funktionen
function myFunction() { /* ... */ }
return someValue;

Zukünftig reservierte Wörter
Diese Wörter sind zwar aktuell (in älteren ECMAScript-Versionen) ohne Funktion, dürfen aber nicht verwendet werden, da sie für zukünftige Sprachfeatures vorgesehen sind:

// Diese können nicht als Bezeichner verwendet werden
enum
implements
interface
package
private
protected
public

Sprachwerte und Literale

true
false
null
undefined
NaN
Infinity

Operatoren und spezielle Schlüsselwörter

typeof
instanceof
new
delete
void
in
yield
await

Strict Mode reservierte Wörter
Im strict mode (eine restriktivere Variante von JavaScript) kommen zusätzliche reservierte Wörter hinzu:

"use strict";
// Im strict mode sind diese zusätzlich reserviert:
arguments
eval

Warum gibt es reservierte Wörter?

Reservierte Wörter existieren aus mehreren Gründen:
Eindeutigkeit: Sie stellen sicher, dass die Sprache klar definierte Konstrukte hat, die nicht durch Benutzercode überschrieben werden können.
Zukunftssicherheit: Durch das Reservieren von Wörtern für zukünftige Erweiterungen wird verhindert, dass heutiger Code mit zukünftigen Sprachversionen in Konflikt gerät.
Konsistenz: Sie bieten einheitliche Sprachkonstrukte über alle JavaScript-Implementierungen hinweg.

Probleme mit reservierten Wörtern

Versehentliche Verwendung als Bezeichner
Dies führt zu Syntaxfehlern:

// Falsch:
let if = 10; // SyntaxError: Unexpected token 'if'
const class = "history"; // SyntaxError: Unexpected token 'class'

// Richtig:
let ifCondition = 10;
const historyClass = "history";

Konflikte mit Objekteigenschaften
Interessanterweise können einige reservierte Wörter als Eigenschaftsnamen von Objekten verwendet werden, da sie in diesem Kontext anders geparst werden:

// Das ist erlaubt:
const obj = {
  if: "condition",
  class: "history",
  for: "loop"
};
console.log(obj.if); // "condition"

Unterschiede zwischen JavaScript-Versionen
Manche Wörter wurden in neueren ECMAScript-Versionen hinzugefügt. Code, der diese als Bezeichner verwendet, bricht in neueren Umgebungen:

// In älterem JavaScript gültig, heute ungültig:
let enum = { RED: 1, BLUE: 2 }; // Früher okay, heute SyntaxError

Ausnahmen und Besonderheiten

Kontextabhängige Schlüsselwörter
Einige Wörter sind nur in bestimmten Kontexten reserviert:

// 'await' ist nur in async-Funktionen reserviert
function normalFunction() {
  let await = 5;
  // In nicht-async Funktionen technisch erlaubt (aber nicht empfohlen)
}

async function asyncFunction() {
  let await = 5; // SyntaxError: await is a reserved word
}

Module und Klassen
In bestimmten Konstrukten wie Klassen oder Modulen gelten zusätzliche Einschränkungen:

class MyClass {
  // 'constructor' ist hier ein reserviertes Wort mit spezieller Bedeutung
  constructor() { /* ... */ }
}

Tools zur Identifikation von Problemen

Moderne Entwicklungswerkzeuge helfen bei der Erkennung von Konflikten mit reservierten Wörtern:
Linter (ESLint): Zeigt Verwendung von reservierten Wörtern als Fehler an
• Code-Editoren (VS Code): Markieren reservierte Wörter mit spezieller Syntaxhervorhebung
• JavaScript-Konsolen: Zeigen sofortige Syntaxfehler bei Verwendung reservierter Wörter

Liste der reservierten Wörter

abstract (reserviert für zukünftige Verwendung)
arguments (im strict mode reserviert)
await (in async-Funktionen reserviert)

boolean (reserviert für zukünftige Verwendung)
break
byte (reserviert für zukünftige Verwendung)

case
catch

char (reserviert für zukünftige Verwendung)
class
const
continue

debugger
default
delete
do
double
(reserviert für zukünftige Verwendung)

else
enum
(reserviert für zukünftige Verwendung)
eval (im strict mode reserviert)
export
extends

false
final
(reserviert für zukünftige Verwendung)
finally
float
(reserviert für zukünftige Verwendung)
for
function

goto (reserviert für zukünftige Verwendung)

if
implements
(reserviert für zukünftige Verwendung)
import
in
instanceof
int
(reserviert für zukünftige Verwendung)
interface (reserviert für zukünftige Verwendung)
let
long
(reserviert für zukünftige Verwendung)

native (reserviert für zukünftige Verwendung)
new
null

package (reserviert für zukünftige Verwendung)
private (reserviert für zukünftige Verwendung)
protected (reserviert für zukünftige Verwendung)
public (reserviert für zukünftige Verwendung)

return

short (reserviert für zukünftige Verwendung)
static
super
switch

synchronized (reserviert für zukünftige Verwendung)

this
throw
throws
(reserviert für zukünftige Verwendung)
transient (reserviert für zukünftige Verwendung)
true
try
typeof

var
void
volatile
(reserviert für zukünftige Verwendung)

while
with
(deprecated, aber immer noch reserviert)

yield (in Generator-Funktionen reserviert)

Fundamentale Regelwerk

Die Grammatik und reservierten Wörter von JavaScript bilden das fundamentale Regelwerk der Sprache. Ein tiefes Verständnis dieser Konzepte ist essentiell für das Schreiben von korrektem, zukunftssicherem Code. Reservierte Wörter sind nicht willkürlich gewählt, sondern spiegeln die Kernkonzepte und geplanten Erweiterungen der Sprache wider. Durch bewussten Umgang mit diesen Sprachfeatures vermeiden Entwickler häufige Fallstricke und schaffen Code, der über verschiedene JavaScript-Versionen hinweg stabil bleibt.

Die bewusste Auseinandersetzung mit diesen Themen mag anfangs pedantisch erscheinen, doch sie legt den Grundstein für professionelle JavaScript-Entwicklung, wo Präzision in der Syntax zu robusteren, wartbareren und weniger fehleranfälligen Anwendungen führt.

Dieses Dokument teilen

Reservierte Wörter

Oder Link kopieren

INHALT

Abonnieren

×
Cancel