| chapter | 19 |
|---|---|
| pageNumber | 93 |
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ı verirHer 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.