ReferenceError (JavaScript)
Kurz: JavaScript kennt den verwendeten Namen nicht, weil er nicht deklariert, falsch geschrieben oder außerhalb seines Gültigkeitsbereichs benutzt wird.
Genauer: Typische Meldungen: ReferenceError: x is not defined und ReferenceError: Cannot access 'x' before initialization. Es geht um Variablen und Gültigkeitsbereiche (Scope).
Im Detail
Mögliche Ursachen
- Tippfehler im Namen (
anzahlstattanzhal). - Variable wurde nie mit
let,constodervardeklariert. - Gültigkeitsbereich: Eine mit
let/constin einem Block deklarierte Variable existiert außerhalb nicht. - Temporal Dead Zone:
let/constwerden vor ihrer Deklaration verwendet (Cannot access 'x' before initialization). - Im Browser genutzte Objekte (
window,document) gibt es in Node.js nicht, und umgekehrt (require,process). - Ein Skript wird vor dem Skript geladen, das den Namen definiert, oder ein Import fehlt.
Beispiel
if (true) {
let summe = 5;
}
console.log(summe); // ReferenceError: summe is not defined
console.log(a); // ReferenceError: Cannot access 'a' before initialization
let a = 1;Lösungswege
- Schreibweise und Groß-/Kleinschreibung prüfen.
- Variable deklarieren und vor der Verwendung initialisieren.
- Außerhalb eines Blocks benötigte Variablen vor dem Block deklarieren.
- Umgebung bedenken: Browser-API in Node oder umgekehrt (
typeof window !== "undefined"). - Reihenfolge der Skripte und Importe prüfen; in Modulen
import/exportkorrekt setzen. - Mit
"use strict"bzw. ES-Modulen werden versehentliche globale Variablen früh gemeldet; ein Linter (ESLint, Regelno-undef) findet es schon im Editor.
Siehe auch: Cannot read properties of undefined, TypeError