[JavaScript]zasięg zmiennej |
[JavaScript]zasięg zmiennej |
29.01.2017, 05:07:12
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 15.09.2016 Skąd: Warszawa Ostrzeżenie: (0%) |
przedszkole to przedszkole
w foo definiuję lokalną zmienną a w bar inkrementuję globalną. Uczyli mnie że zmienne globalne i lokalne o tej samej nazwie to 2 różne zmienne. |
|
|
29.01.2017, 08:40:06
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
-------------------- |
|
|
29.01.2017, 13:11:45
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) |
Kiedy używasz var/let/const to tworzysz nową zmienną w danym scope (let/const nawet w bloku). Kiedy deklarujesz zmienną i nie używasz do tego var/let/const wtedy twoja zmienna tworzy się w global scope, to znaczy przypisuje się do window.
Więc mógłbyś zrobić tak:
Co zrobić żeby do takiej sytuacji nie dopuścić? Używać strict mode:
Tutaj więcej informacji o strict mode: https://developer.mozilla.org/en-US/docs/We...nce/Strict_mode |
|
|
29.01.2017, 18:26:31
Post
#4
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 15.09.2016 Skąd: Warszawa Ostrzeżenie: (0%) |
(odpowiadam sam sobie. Może tu kiedyś wrócę.)
//jeśli zdefiniowałeś globalną zmienną to lokalnie w funkcji użycie nazwy tej zmiennej (bez window.) odnosi się do niej ALE jeśli w tej lokalnej funkcji zdefiniowałem lokalną zmienną o tej samej nazwie to ona PRZYSŁANIA globalną i dostęp do globalnej musze poprzedzić przedrostkiem window..
|
|
|
30.01.2017, 08:23:18
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) |
Tak na przyszłość, używaj strict mode, żeby nie odciąć się od tego jak kiedyś JS działał, a jak działa teraz. Przykładowo w tym twoim ostatnim poście, nigdzie nie masz deklaracji bar i już by był błąd. Uważam że takie rzeczy trzeba wiedzieć od samego początku, dlatego że już na początku przestanie wprowadzać to niepotrzebne zamieszanie oraz nie pozwoli ci uczyć się złych nawyków.
|
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 13:01 |