Co to jest hoisting?

Pokaż odpowiedź

Hoisting występuje w przypadku zadeklarowania zmiennej lub funkcji słowem kluczowym var. Hoisting powoduje, że deklaracje zmiennych są wywoływane w pierwszej kolejności przed wykonaniem reszty kodu. Co trzeba zaznaczyć hoisting jedynie deklaruje zmienne a nie przypisuje im wartości, Myślę, że dobrze zobrazuje to przykład:

console.log(a);
var a = 4;
console.log(a);

Po wykonaniu tego kodu widzimy, że zmienna a została zdefiniowana, ale nie przypisano jej wartości. Zamień teraz w pierwszym console logu zmienną a na dowolną inną i zobacz jaki komunikat otrzymasz w konsoli. Zjawisku hoistingu nie ulegają zmienne zadeklarowane słowami let oraz const (nie do końca nie ulegają – trafiają do tzw. Temporal Dead Zone).

console.log(a);
let a = 4;
console.log(a);

Tutaj otrzymamy błąd o treści: ReferenceError: a is not defined.

W skrócie: Hoisting to wbudowany w JavaScript mechanizm wynoszący wszystkie deklaracje zmiennych na początek funkcji.
Poleganie na hoistingu nie jest jednak najlepszą praktyką. Dużo lepszym wyjściem jest ręczna deklaracja zmiennych na początku funkcji, dzięki czemu kod staje się bardziej czytelny i można uniknąć dziwnych błędów.

ukryj
Subscribe
Powiadom o
0 komentarzy
Inline Feedbacks
View all comments