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.

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

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ą.

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';

Typ String jest zaopatrzony w znaki specjalne służące do formatowania tekstu.

  • \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.

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.


Zobacz również

edytuj