• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesłanianie zmiennej w JavaScript - jak to działa?

0 głosów
82 wizyt
pytanie zadane 21 stycznia w JavaScript, jQuery, AJAX przez Kubs Gaduła (3,200 p.)

Witajcie,

skoro kod wykonywany jest z góry do dołu, to dlaczego ta zmienna var area w funkcji circleArea przesłania tą zmienną globalną var area = circleArea(radius); ? A nie odwrotnie.

 

....

function circleArea(r) {

   var area = Math.PI * r * r;
   return area;               // tutaj - ta zmienna

}


setup width, height);
var area = circleArea (radius);    // tutaj - przesłania tą
var distance = computeDistance (x, y, centerX, centerY);
alert ("Pole:" + area);
.......

 

1 odpowiedź

0 głosów
odpowiedź 21 stycznia przez m4sk1n Pasjonat (15,840 p.)
Przesłania ją w obrębie funkcji.

Wykonywanie kodu z góry do dołu to spore uproszczenie przez hoisting i te sprawy.

Jeżeli chodzi o deklarowanie zmiennych, polecam przestawić się na `let` i `const` z ES6.
komentarz 21 stycznia przez Kubs Gaduła (3,200 p.)
Czyli w tym przykładzie ta zmienna lokalna nie przesłania tej globalnej?
komentarz 21 stycznia przez m4sk1n Pasjonat (15,840 p.)
Przysłania ją w funkcji, dzięki temu przypisanie do niej `Math.PI * r * r` nie powoduje zmiany wartości zmiennej `area` z 12 wiersza.
komentarz 21 stycznia przez Kubs Gaduła (3,200 p.)
Czyli ten kod nie wykonuje się z góry do dołu? No bo gdyby, to wartość zmiennej lokalnej zmieniłaby się docelowo na wartość tej zmiennej globalnej z wiersza 12stego. Tak?
1
komentarz 21 stycznia przez m4sk1n Pasjonat (15,840 p.)
Najpierw powstaje deklaracja funkcji circleArea. Nie jest wtedy wykonywany żaden kod będący częścią tej funkcji. Wiersz 11 to chyba pomylka, ominę… Później deklarowana jest zmienna globalna area i wykonywana jest funkcja circleArea. Wtedy wykonywane są wiersze 4-7. Później wykonywana jest reszta, w przypadku następnego wykonania funkcji będzie podobnie.
1
komentarz 21 stycznia przez Kubs Gaduła (3,200 p.)

No tak.. to wszystko wyjaśnia..za pierwszym razem zmienna lokalna area jest po pusta. Dopiero pierwsza jej wartość zachowywana jest w tej area globalnej. Acha...

Z taką osobą jak Ty można współpracować :)

komentarz 21 stycznia przez m4sk1n Pasjonat (15,840 p.)
Nawet gdyby była pełna przed zadeklarowaniem funkcji, zostałaby ona zaslonieta tylko w obrębie tej funkcji
komentarz 21 stycznia przez Kubs Gaduła (3,200 p.)
Ma to sens.
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

62,240 zapytań

108,353 odpowiedzi

226,163 komentarzy

34,616 pasjonatów

Przeglądających: 186
Pasjonatów: 22 Gości: 164

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...