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

JS jak zrobić warunek braku zmiennej oraz co to są "==="

Object Storage Arubacloud
0 głosów
423 wizyt
pytanie zadane 13 października 2015 w JavaScript przez Shiro Stary wyjadacz (10,300 p.)

Cześć!

Właśnie znienawidziłem JSa .. w jaki sposób zrobić warunek spełniający się gdy dana zmienna nie ma wartości lub ewentualnie gdy taka zmienna nie istnieje.

Znalazłem na internecie taki warunek:
 

if(zmienna===0) ...

Co on oznacza ? 

Mam duże problemy z JS można jakoś znaleźć błędy kodu ? np gdy nie damy w c++ ';' to nam wyskakuje błąd .. 

 

Pozdrawiam Shiro!

3 odpowiedzi

+3 głosów
odpowiedź 13 października 2015 przez writen Nałogowiec (29,060 p.)
edycja 13 października 2015 przez writen

=== to jest operator identyczności. Czyli porównuje wartość zmiennej i jednoczesnie jej typ.

Aby sprawdzić czy zmienna jest pusta lub istnieje wystarczy prównać jej typ:

if(typeof(zmienna) == "undefined") {
// zmienna nie istnieje lub nie ma przypisanej wartości.
}

Mam duże problemy z JS można jakoś znaleźć błędy kodu ? np gdy nie damy w c++ ';' to nam wyskakuje błąd ..

W każdej przeglądarce masz dostępne narzędzia developerskie, np. w firefox popularny firebug. W konsoli wyświetlane są wszystkie błędy. 

W javascript sprawa z średnikiem ma się zupełnie inaczej niż w innych językach. W JS tak naprawdę ten średnik nie jest wymagany, ponieważ każde zakończenie linii jest interpretowane jako koniec instrukcji. Można by nawet w ogóle nie stawiać średników, ale mogłoby to w późniejszym czasie spowodować wiele problemów. Każde popularne IDE daje znać jeśli tego średnika zapomnisz postawić.

komentarz 13 października 2015 przez Comandeer Guru (601,550 p.)

IMO jest różnica między pustą zmienną a zmienną bez zdefiniowanej wartości. Stąd optowałnym po prostu za:

if(!zmienna)

 

komentarz 13 października 2015 przez writen Nałogowiec (29,060 p.)
edycja 13 października 2015 przez writen

Twój warunek nie zadziała gdy zmienna nie została nigdzie zadeklarowana.

Jeśli chcemy brać pod uwagę czy zmienna jest pusta warunek powinien wyglądać tak:

if(typeof(zmienna) == "undefined" || !zmienna) {
    // zmienna jest pusta, nie posiada wartości lub nie została zadeklarowana
}

 

komentarz 13 października 2015 przez Comandeer Guru (601,550 p.)
Raczej chodziło mi o przypadki gdy w zmiennej jest pusty ciąg znaków czy null.
komentarz 13 października 2015 przez writen Nałogowiec (29,060 p.)
Po chwili zrozumiałem o co ci chodziło i edytowałem komentarz. Czyli wszystko się już zgadza,
komentarz 14 października 2015 przez Comandeer Guru (601,550 p.)

A propos: nie każde zakończenie linii w JS równoznaczne jest z zakończeniem instrukcji, zwłaszcza jeśli występują tam konstrukcje typu []() czy podobne. Co więcej, średniki w JS są wymagane, ale parser je wstawia sam (tzw Automatic Semicolon Insertion - ASI). Stąd lepiej je wstawiać samemu… albo ogarnąc dobrze zasady ASI ;)

komentarz 14 października 2015 przez Shiro Stary wyjadacz (10,300 p.)
Rozumiem i dziękuje za pomoc. mam jeszcze jedno pytanie w takim razie czy jest i co oznacza oznaczenie: x==0
komentarz 14 października 2015 przez Czort Nałogowiec (32,500 p.)

Taki zapis nie będzie lepszy?

if( zmienna !== undefined && zmienna !== null)

Poza tym czytałem gdzieś, że nie powinno się stosować ==.

komentarz 14 października 2015 przez Comandeer Guru (601,550 p.)

@ Shiro to samo co !x ;)

@Czort nie, bo jeśli zmienna jest niezdefiniowana, to zostanie rzucony ReferenceError. Owszem, nie powinno się stosować ==, ale w przypadku operatora typeof jest to dość niegroźne (zawsze zwraca określone wartości). Inna rzecz, że kod @writena można wyglebić banalnie prosto ;)

window.typeof = function() { return 'undefined'; }

typeof('a'); // "undefined"
typeof 'a'; // "string"

Stąd IMO lepiej pomijać nawiasy po operatorze typeof, bo można go przykryć ;)

komentarz 14 października 2015 przez Shiro Stary wyjadacz (10,300 p.)
Mam takie pytanie. Czy taki kod nie powinien co milisekunde zmieniac swojej wartosci ?

http://jsfiddle.net/shirobachi/fn0qgd43/3/
komentarz 14 października 2015 przez Comandeer Guru (601,550 p.)

A niby skąd ma wziąć to i? Zmienne w JS mają zasięg funkcyjny, więc to i powinieneś przekazywać do funkcji start. BTW http://tutorials.comandeer.pl/js-beauty.html#setTimeout

komentarz 14 października 2015 przez Shiro Stary wyjadacz (10,300 p.)
Czyli że po zakończeniu działania funkcji są one usuwane ?

Wydaje mi się że oto chodzi chodź coś nadal robię nie tak. http://jsfiddle.net/shirobachi/fn0qgd43/5/
komentarz 14 października 2015 przez Comandeer Guru (601,550 p.)
Czyli, że zmienna zadeklarowana wewnątrz funkcji nie jest widoczna na zewnątrz: http://jsfiddle.net/Comandeer/a1tc48tx/
komentarz 14 października 2015 przez writen Nałogowiec (29,060 p.)

Oczywiście zgadzam się ze wszystkim co napisał Comandeer. Temu kto jeszcze nie trafił na jego artykuły polecał poszukać i poczytać wink

komentarz 14 października 2015 przez Shiro Stary wyjadacz (10,300 p.)
Aaa .. Dobra zaczynam ogarniać :)
komentarz 14 października 2015 przez Shiro Stary wyjadacz (10,300 p.)

Chyba mnie znienawidzicie ale znowu problem .. http://jsfiddle.net/shirobachi/a1tc48tx/1/ 

Ja na prawde mam dość JS .. angry

0 głosów
odpowiedź 13 października 2015 przez R[a]=d(ek); Mądrala (6,370 p.)
Ta linijka oznacza: jeśli zmienna jest identyczna jak 0, zaś jeśli byś miał zapis if (zmienna == 0) to to oznacza jest równa 0
0 głosów
odpowiedź 13 października 2015 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Tak jest

środowisko - >http://www.dobreprogramy.pl/phpDesigner,Program,Windows,17701.html ( osobiście nie sprawdzałem ). Są jeszcze wtyczki do przeglądarek ( nie pamiętam nazw bo dawno się  bawiłem w  programowanie webowe ). Co do znaku === to przykładowo "0" === 0    <- warunek nie spiełniony bo to nie jest identyczne, a "0" == 0   <- warunek spełniony bo wartość jest taka sama.

Podobne pytania

0 głosów
0 odpowiedzi 1,076 wizyt
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 17 sierpnia 2016 w HTML i CSS przez alus152 Bywalec (2,690 p.)
0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 21 stycznia 2016 w JavaScript przez kaczmar Początkujący (490 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...