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ı (
cnoutyerinecount). - Değişken hiç
let,constveyavarile bildirilmedi. - Kapsam: bir blokta
let/constile bildirilen değişken dışarıda yoktur. - Geçici ölü bölge:
let/constbildirimlerinden ö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
- Yazımı ve büyük/küçük harfi kontrol et.
- Değişkeni bildir ve kullanmadan önce başlat.
- Blok dışında gereken değişkenleri bloktan önce bildir.
- Ortamı düşün: Node’da tarayıcı API’si veya tersi (
typeof window !== "undefined"). - Betik sırasını ve içe aktarmaları kontrol et; modüllerde
import/export’u doğru ayarla. "use strict"veya ES modülleriyle kazara oluşan globaller erken bildirilir; bir linter (ESLint,no-undefkuralı) bunu düzenleyicide bulur.
Ayrıca bak: Cannot read properties of undefined, TypeError