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

Undefinied - zmienna

Object Storage Arubacloud
0 głosów
252 wizyt
pytanie zadane 12 listopada 2022 w JavaScript przez jasper93 Obywatel (1,310 p.)

Witam, przerabiając podstawy javascriptu natknąłem się na termin undefinied, który oznacza, że zmienna bądź obiekt nie ma przypisanej wartości  lub nie została zainicjalizowana. Przykładowo, jeśli w przeglądarce wpiszę:

 let result = 2+2

wtedy interpreter wyrzuci mi undefinied, dopiero jak użyję ponownie zmiennej result dostaje wartość, dlaczego? Skoro przy pierwszym podejściu już inicjalizuje zmienna z wartością.

1
komentarz 12 listopada 2022 przez VBService Ekspert (253,420 p.)

Sprawdź smiley

console.log(suma = 2 + 2, suma);

 

komentarz 12 listopada 2022 przez Wiciorny Ekspert (270,230 p.)
w typescript już niestety nie przejdzie

2 odpowiedzi

+2 głosów
odpowiedź 12 listopada 2022 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 12 listopada 2022 przez jasper93
 
Najlepsza

Konsola wyświetla wartość, którą zwraca wykonany kod. Deklaracja zmiennej wykonuje akcję - tworzy zmienną i zapisuje ją w pamięci (opcjonalnie inicjując ją przypisaną wartością - u Ciebie 4 z dodawania) - ale nie zwraca samej wartości zmiennej, bo nie jest wyrażeniem. Z kolei brak wartości w JavaScript jest tożsamy z undefined. Ale jeśli użyjesz tej zmiennej pod jej deklaracją, to konsola pokaże jej wartość:

let result = 2+2;
result;
// 4

Więcej o porównaniu deklaracji z wyrażeniami można poczytać np. tu: https://2ality.com/2012/09/expressions-vs-statements.html

komentarz 12 listopada 2022 przez jasper93 Obywatel (1,310 p.)
Dziękuje, czyli rozumiem program nie jest w stanie przypisać i zwrócić wartości jednocześnie, tylko przypisuje wartość 4 do pamięci.
komentarz 12 listopada 2022 przez ScriptyChris Mędrzec (190,190 p.)

Nie nazwałbym tego jako "nie jest w stanie". Po prostu instrukcja deklaracji zmiennej w JavaScript działa w taki, a nie inny sposób, że nie zwraca wartości, stąd konsola wyświetla undefined. :P

komentarz 12 listopada 2022 przez ScriptyChris Mędrzec (190,190 p.)

AFAIK natychmiastowe wyświetlenie wartości utworzonej zmiennej jest możliwe tylko przy niejawnej deklaracji zmiennej globalnej (co nie zadziała w strict mode i lepiej jest tego unikać). Chociaż wtedy będzie to bardziej sama operacja przypisania property do już istniejącego obiektu niż pełnoprawna deklaracja zmiennej.

0 głosów
odpowiedź 12 listopada 2022 przez Nitr0Skay Użytkownik (670 p.)
komentarz 12 listopada 2022 przez jasper93 Obywatel (1,310 p.)
Nie wiem czy dobrze zrozumiałem, udefinied wynika z tego, że w konsoli program sprawdza czy let result = 2+2, czyli czy dana zmienna jest = 4, a wcześniej nie ma deklaracji takiej zmiennej, dlatego wyrzuca undefinied?
komentarz 12 listopada 2022 przez Nitr0Skay Użytkownik (670 p.)

Nie sądzę:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

 

Swoją drogą, polecam też sprawdzić, jaki wynik daje 

console.log(eval("var f = 20;"))

 

komentarz 12 listopada 2022 przez jasper93 Obywatel (1,310 p.)
Poczytałem i szczerze nadal pewności nie mam,  wrzuciłem w konsolę: "console.log(eval("var f = 20;") i też dostałem udefinied. Czyli mam rozumieć, że instrukcja nic nie zwraca i dlatego jest udefinied?
komentarz 12 listopada 2022 przez ScriptyChris Mędrzec (190,190 p.)

@Nitr0Skay, eval nie zmienia tutaj sytuacji w kontekście wyświetlania zwracanej wartości, bo... samo tworzenie zmiennej nie zwraca wartości.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#return_value

Podobne pytania

0 głosów
1 odpowiedź 299 wizyt
0 głosów
0 odpowiedzi 199 wizyt
0 głosów
2 odpowiedzi 703 wizyt

92,584 zapytań

141,433 odpowiedzi

319,668 komentarzy

61,966 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!

...