Hoisting
Hosting, JavaScript'te tanımlamaları en üste taşımak için varsayılan bir davranıştır. Bir kod yürütülürken, global bir yürütme bağlamı oluşturur: oluşturma ve yürütme. Oluşturma aşamasında, JavaScript değişken ve işlev tanımlamalarını sayfanın en üstüne taşır, bu da hoisting olarak bilinir.
// değişken hoisting
console.log(counter);
let counter = 1; // "ReferenceError: Cannot access 'counter' before initialization" hatası verir
Her ne kadar counter
değişkeni bellekte mevcut olsa da değişken ilk değerini almadığı için hata veriyor. Bunun nedeni, counter
değişkeninin burada sayfanın yukarısına çekilmesidir.
// function hoisting
const x = 20,
y = 10;
let result = add(x,y); // ❌ Uncaught ReferenceError: add is not defined
console.log(result);
let add = (x, y) => x + y;
Burada, add
işlevi, global yürütme bağlamının oluşturulması aşamasında bellekte undefined
ile başlatılır ve yukarı çekilir. Böylece, bir hata atılır.