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

Dziwny Uncaught ReferenceError?

Object Storage Arubacloud
0 głosów
206 wizyt
pytanie zadane 31 stycznia 2019 w JavaScript przez jared Gaduła (3,600 p.)

Dlaczego błąd nie pojawia się dla zmiennej name?

function print() {
    {
        let name = 'name';
        let example = 'example';
        let x = 10;
    }

    console.log('name =', name);
    console.log('example =', example);
    console.log('x =', x);
}

print();

 

1
komentarz 31 stycznia 2019 przez ScriptyChris Mędrzec (190,190 p.)
Z ciekawości, uruchamiasz ten kod na jakiejś konkretnej stronie internetowej, czy coś lokalnego? Jaka przeglądarka?
komentarz 1 lutego 2019 przez jared Gaduła (3,600 p.)
Lokalnie w przeglądarce Opera oraz Chrome. Tu i tu taki sam efekt.

4 odpowiedzi

+1 głos
odpowiedź 31 stycznia 2019 przez ScriptyChris Mędrzec (190,190 p.)

Obstawiam, że masz globalną zmienną (czyli w obiekcie window) o nazwie name, ponieważ - jak widać na screenie - jest tam pusty string, albo coś podobnego. A nie pojawia się dla tej zmiennej błąd, bo JS w momencie gdy nie znalazł tej zmiennej w lokalnym scope to poszukał wyżej.

komentarz 1 lutego 2019 przez jared Gaduła (3,600 p.)
A można jakoś sprawdzić, albo skasować tamtą zmienną?
komentarz 1 lutego 2019 przez ScriptyChris Mędrzec (190,190 p.)

Skasować taką zmienną możesz poprzez operator delete, ale dlatego, ponieważ zmienne globalne deklarowane słówkiem var są przypisywane jako property do obiektu window - dzieje się tak też dla zmiennych globalnych tworzonych bez żadnego słówka (tzw. implicit global variable). Ten sposób nie zadziała jednak, jeśli zmienna globalna została utworzona słówkami let lub const. Wtedy taka zmienna nie należy do obiektu window.

Jeśli chodzi o sprawdzenie istnienia takiej zmiennej, to możesz zweryfikować "naocznie" po prostu wyświetlając ją w konsoli (tak jak zrobiłeś), albo przez sprawdzenie, czy takie property nie jest wartością undefined (lub nie jest takiego typu), albo przez operator in. Przykłady:

window.name !== undefined // true
typeof window.name !== 'undefined' // true
'name' in window // true 
0 głosów
odpowiedź 31 stycznia 2019 przez ShiroUmizake Nałogowiec (46,300 p.)

Co próbujesz tym osiągnać?

 

   {
        let name = 'name';
        let example = 'example';
        let x = 10;
    }

 

komentarz 31 stycznia 2019 przez jared Gaduła (3,600 p.)

Chcę sprawdzić zakres zmiennych z wykorzystaniem słowa kluczowego let. Zakres jest dla bloku {} stąd też nie powinna być możliwość odwołania się do ww. zmiennych.

0 głosów
odpowiedź 31 stycznia 2019 przez pablop76 VIP (123,120 p.)

Spóźniłem się więc edytowałem odpowiedź

Object

komentarz 31 stycznia 2019 przez jared Gaduła (3,600 p.)

Chcę sprawdzić zakres zmiennych z wykorzystaniem słowa kluczowego let. Zakres jest dla bloku {} stąd też nie powinna być możliwość odwołania się do ww. zmiennych.

0 głosów
odpowiedź 31 stycznia 2019 przez jared Gaduła (3,600 p.)
Nikt nie wie dlaczego tak się dzieje?

Podobne pytania

0 głosów
1 odpowiedź 467 wizyt
0 głosów
1 odpowiedź 130 wizyt
pytanie zadane 8 marca 2019 w JavaScript przez Bzytek Użytkownik (810 p.)
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 6 kwietnia 2022 w JavaScript przez chrystian Gaduła (4,780 p.)

92,536 zapytań

141,377 odpowiedzi

319,455 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...