JavaScript/Zmienne i typy zmiennych
Typy danych w Javascripcie
[edytuj]Javascript należy do języków programowania które są dynamicznie typowane, oraz słabo typowane.
Dynamicznie typowany język programowania to taki, w którym dynamicznie możemy nadawać typy zmiennym, podczas wykonywania programu. |
Słabo typowany język programowania to taki, w którym konwersje na różne typy danych są wykonywane automatycznie. Na przykład alert("hello " + 12 + " world");
|
Deklaracja zmiennych
[edytuj]Do deklaracji zmiennych o zasięgu lokalnym powinieneś posłużyć się słowem kluczowym "var":
var a;
W ten sposób utworzyliśmy zmienną o zasięgu lokalnym, jednakże nie została ona zainicjalizowana żadnym typem.
var a=12;
Utworzyliśmy teraz zmienną o zasięgu lokalnym i posiada ona typ zgodny z naszym przypisaniem, czyli w tym przypadku typem jest liczba. Zmienna lokalna jest usuwana z pamięci po wyjściu z obszaru kodu, w którym obowiązywała.
Możemy także bez deklaracji zmiennej ją inicjalizować:
a=12;
W powyższym zapisie interpreter JavaScriptu domniemywa, że zadeklarowaliśmy zmienną globalną a lub zmieniliśmy wartość tej zmiennej globalnej.
Oczywiście zmienna utworzona z użyciem słowa kluczowego "var" na najwyższym poziomie kodu jest tożsama ze zmienną utworzoną bez tego słowa.
Sprawdzanie typów danych
[edytuj]Zanim przystąpimy do omawiania typów danych w JavaScripcie przedstawimy prosty sposób odczytywania typu poszczególnych zmiennych. Do odczytania typu zmiennej służy operator typeof().
alert(typeof(12));
Powyższy przykład powinien nam wyświetlić "Number". Oznacza to, że 12 jest typem liczby.
Typy proste
[edytuj]Do typów prostych należą: Boolean, Number, String, Null oraz Undefined.
Typ Boolean
[edytuj]Typ boolean może przyjmować dwie wartości: true albo false. Przykłady deklaracji:
var prawda=true;
var falsz=false;
Typ Number
[edytuj]Typ Number jest unikatowym zjawiskiem w językach programowania. Może zarówno przechowywać liczbę całkowitą, jak i liczbę zmiennoprzecinkową.
Liczby całkowite
[edytuj]Deklaracja zmiennej typu Number odbywa się poprzez przyporządkowanie liczby do zmiennej:
var liczba = 1;
Liczby całkowite mogą być wyrażane w ósemkowym oraz w szesnastkowym systemie liczbowym.
var liczba8 = 035; //ósemkowo zapisana liczba 035 odpowiada liczbie 29 w systemie dziesiętnym
var liczba16 = 0xff;//szesnastkowo zapisana liczba 0xff odpowiada liczbie 255 w systemie dziesiętnym
var LICZBA16 = 0xC3;//szesnastkowo zapisana liczba 0xC3 odpowiada liczbie 195 w systemie dziesiętnym
Wyniki przeprowadzanych działań i operacji na liczbach zwracane są w dziesiętnym systemie liczbowym. |
Liczby zmiennoprzecinkowe
[edytuj]Liczby typu zmiennoprzecinkowego deklaruje się poprzez przyporządkowanie liczby rzeczywistej do zmiennej:
var liczba_rzeczywista=12.0;
W przypadku bardzo dużych, jak i bardzo małych liczb, można skorzystać z postaci wykładniczej:
var notacja_naukowa = 12.333e12;//12.333e6 = 12.333*10^6 = 12333000
var notacja_naukowa_mala = 7e-2;//7e-2=0.07
Zmiennoprzecinkowy typ Number przechowywany jest w 64-bitowym formacie IEEE 754 co oznacza, że maksymalnie liczby zapisane w tym formacie mogą posiadać około 16 miejsc po przecinku, w przypadku przekroczeniu tejże wartości, liczba jest zaokrąglana do minimalnej dopuszczalnej wartości.
Wartości nieliczbowe
[edytuj]Typ Number oferuje nam dodatkowo typy nieliczbowe, związane z zakresami i wartościami liczb. Operacje i działania na liczbach nie mogą przekroczyć przedziału (Number.MIN_VALUE, NUMBER.MAX_VALUE) gdzie Number.MIN_VALUE to minimalna dopuszczalna wartość Number.MAX_VALUE to maksymalna dopuszczalna wartość. Jeżeli wynik obliczeń przekroczy przedział, nadawana mu jest wartość Number.POSITIVE_INFINITY, w przypadku przekroczenia maksimum lub Number.NEGATIVE_INFINITY, w przypadku przekroczenia minimum, nie są to wartości liczbowe, a literały odpowiednio: Inifinity oraz -Infinity. By sprawdzić czy dane działania na liczbach nie przekroczyły dopuszczalnego zakresu przydaje się metoda isFinite(), która to zwraca typ Boolean: true w przypadku, gdy nie wyszliśmy poza dopuszczalny zakres oraz false, gdy go przekroczyliśmy
Ostatnim literałem nieliczbowym oferowanym przez typ Number to NaN, co symbolizuje, że dana wartość zmiennej nie jest liczbą. Zazwyczaj typ Number przyjmuje wartość NaN w przypadku złej konwersji z innego typu na typ Number. By sprawdzić czy mamy do czynienia z NaN korzystamy z metody isNan(), która zwraca typ Boolean: true w przypadku, gdy mamy do czynienia z wartością NaN, oraz false, gdy mamy do czynienia z wartością liczbową.
Przedstawione tutaj nieliczbowe literały, które może przyjmować typ Number, nie należy stosować do dalszych obliczeń, ponieważ może to przynieść nieoczekiwanych efekt, w przypadku istnienia ryzyka, że zachodzi możliwość przyjęcia wartości nieliczbowej przez typ Number, należy skorzystać z przedstawionych funkcji isFinite(), oraz isNaN(). |
Typ String
[edytuj]String to typ zmiennej, w której przechowywane są ciągi znaków. Definiowanie ciągu znakowych następuje poprzez umieszczenie go w cudzysłowie " :
var zdanie="Ala ma kota.";
lub też w apostrofie ' :
var dlugi_wyraz='Konstantynopolitańczykowianeczka';
JavaScript nie posiada odpowiednika typu char znanego z innych języków programowania, dlatego też w przypadku wprowadzania ciągów znakowych można się posługiwać parami cudzysłowów i apostrofów zamiennie. |
Proszę się ustrzegać typowych błędów
źle zamknięty cudzysłów!
źle zamknięty apostrof! |
Typ String jest zaopatrzony w znaki specjalne służące do formatowania tekstu.
Porównaj z C |
- \b - backspace (usuwa poprzedzający znak)
- \f - wysuniecie strony
- \n - nowy wiersz
- \r - powrót do początku wiersza
- \t - tabulator poziomy
- \" - cudzysłów (przydatne, jeśli łańcuchy znaków wprowadzamy za pomocą cudzysłowów i chcemy wyświetlić ten znak)
- \' - apostrof (przydatne, jeśli łańcuchy znaków wprowadzamy za pomocą apostrofów i chcemy wyświetlić ten znak)
- \\ - ukośnik wsteczny (backslash)
- \0ooo - znak napisany za pomocą liczby w systemie ósemkowym, gdzie 'ooo' należy zastąpić trzycyfrową liczbą ósemkową.
- \xhh - znak napisany za pomocą liczby w systemie szesnastkowym, gdzie 'hh' należy zastąpić dwucyfrową liczbą szesnastkową.
- \unnnn - uniwersalna nazwa znaku, gdzie 'nnnn' należy zastąpić czterocyfrowym identyfikatorem znaku w systemie szesnatkowym.
Pozostałe typy
[edytuj]Przedstawione niżej typy, nie są zmiennymi JavaScriptu, a jedynie własnościami obiektu globalnego.
Obiekty typu function oraz typy referencyjne zostaną omówione w dalszej części książki |
Typ Undefined
[edytuj]Typ Undefined to inaczej typ nieokreślony. Posiada jedną wartość w formie literału: undefined. Typ ten jest automatycznie nadawany podczas deklarowania zmiennych. Można to łatwo sprawdzić:
var zmienna;
alert(typeof(zmienna)); //wyświetla undefined
Jeśli chcemy przypisać wartość wyniku działania funkcji do zmiennej, a dana funkcja nie zwraca żadnej wartości, to nastąpi zwrócenie wartości undefined, tak jak w poniższym przykładzie:
function funkcja(){};
var wartosc_funkcji=0;
alert(typeof wartosc_funkcji); //wyświetla number
wartosc_funkcji=funkcja();
alert(typeof wartosc_funkcji); //wyświetla undefined
Typ Null
[edytuj]Typ Null to inaczej typ pusty. Posiada jedną wartość w formie literału: null. Typ ten jest zwracany przez funkcje, które to mają zamiar zwrócić nieistniejący obiekt.
Obecnie wykorzystywane interpretery JavaScriptu nie pozwalają na używanie nieistniejących obiektów i sygnalizują błąd. |
Zobacz również
[edytuj]