#2. Zagadka JavaScript
Paweł Niedźwiecki
Co warto wiedzieć, przed próbą udzielenia odpowiedzi ?
- hoisting, windowanie – JavaScript
- zasięg zmiennych i funkcji w JavaScript
Zapoznaj się z kodem poniżej i daj znać jakie wartości uzyskamy w console.log
1
2
3
4
5
6
var price = 99;
var getCoursePrice = function () {
console.log(price);
var price = 100;
};
getCoursePrice();
Odpowiedź :
W tym przykładzie wyświetlona zostanie wartość undefined.
Jest to spowodowane tym, że w JavaScript wszystkie deklaracje funkcji i zmiennych są hoistowane, ale tylko var są inicializowane przez undefined.
Deklaracja var price = 100; jest więc przenoszona na górę function scope jako var price; W momencie wywołania silnik JavaScript odwołuje sie do tej lokalnej zmiennej, która przesłania zmienną istiejącą poza zkresem funkcji.
Deklaracja var price = 99; nie jest w ogóle wykorzystywana podczas działania skryptu.