EMZETT.
Giriş yap

ReferenceError (JavaScript)

Kısaca: JavaScript kullanılan adı tanımıyor, çünkü bildirilmemiş, yanlış yazılmış ya da kapsamı dışında kullanılmış.

Biraz daha ayrıntılı: Tipik mesajlar: ReferenceError: x is not defined ve ReferenceError: Cannot access 'x' before initialization. Konu değişkenler ve kapsamdır.

Ayrıntılı

Olası nedenler

  • Adda yazım hatası (cnout yerine count).
  • Değişken hiç let, const veya var ile bildirilmedi.
  • Kapsam: bir blokta let/const ile bildirilen değişken dışarıda yoktur.
  • Geçici ölü bölge: let/const bildirimlerinden önce kullanıldı (Cannot access 'x' before initialization).
  • Tarayıcıda kullanılan nesneler (window, document) Node.js’te yoktur ve tersi de geçerlidir (require, process).
  • Bir betik, adı tanımlayan betikten önce yükleniyor veya bir içe aktarma eksik.

Örnek

if (true) {
  let sum = 5;
}
console.log(sum);     // ReferenceError: sum is not defined
console.log(a);       // ReferenceError: Cannot access 'a' before initialization
let a = 1;

Çözümler

  1. Yazımı ve büyük/küçük harfi kontrol et.
  2. Değişkeni bildir ve kullanmadan önce başlat.
  3. Blok dışında gereken değişkenleri bloktan önce bildir.
  4. Ortamı düşün: Node’da tarayıcı API’si veya tersi (typeof window !== "undefined").
  5. Betik sırasını ve içe aktarmaları kontrol et; modüllerde import/export’u doğru ayarla.
  6. "use strict" veya ES modülleriyle kazara oluşan globaller erken bildirilir; bir linter (ESLint, no-undef kuralı) bunu düzenleyicide bulur.

Ayrıca bak: Cannot read properties of undefined, TypeError