Uczę się zmiennych globalnych i lokalnych JS, ale jestem zdezorientowany w tej konkretnej funkcji.Zmienne lokalne i globalne w funkcji JavaScript
var text = "top";
function print() {
return (text);
}
print();
//returns 'top'
Rozumiem, dlaczego powraca na górę. var text
to zmienna globalna. Funkcja print()
ma do niej dostęp i zwraca text
, zwracając 'top'
.
var text = "top";
function print() {
return (text);
var text = "bottom";
}
print();
// returns undefined
Posiadam podstawową wiedzę o zmiennych globalnych i lokalnych (lub tak mi się wydawało). Wiem, że funkcja print
ma dostęp do własnych lokalnych i globalnych zmiennych.
Nie rozumiem, dlaczego to zwraca undefined
. Według mojej wiedzy, linia return text;
wyszukuje globalną zmienną text
, do której ma dostęp (jak pokazano na pierwszym bloku kodu). Po zwrocie text = 'top'
deklaruje również własną zmienną lokalną o tej samej nazwie, ale innej wartości, 'bottom'
. Lokalna zmienna bottom
, według mojej wiedzy, powinna tam siedzieć, ponieważ nie została wcześniej wywołana.
Dlaczego nie pokazano top
(lub nawet pokazuje bottom
), ale zamiast tego pokazuje undefined
?
No. W drugim przypadku, zwraca tekst zmiennej lokalnej , który jest * deklarowany * wewnątrz funkcji. (To właśnie sprawia, że jest lokalny.) Ale w momencie, gdy powrót jest wykonywany, zmienna nie ma jeszcze przypisanej wartości. –
Sprawdź "zmienne podnoszenie" w JavaScript. –