Kurs obiektowego JavaScript (10)

Autor: Damian Chodorek • Opublikowany: 27 września 2014 • Ostatnia aktualizacja: 8 lutego 2015 • Kategoria: javascript, kursy

Omówienie funkcji, sposobów przekazywania parametrów oraz kilku przydatnych funkcji wbudowanych.

Funkcje są bardzo ważną częścią każdego języka programowania. Jeśli chodzi o JS, to ich zrozumienie jest jeszcze ważniejsze, ponieważ spełniają one wiele ról i są jednym z powodów, dla których JS jest tak elastycznym językiem. Czym więc jest funkcja? To fragment kodu, który jest w jakiś sposób identyfikowany, który można wielokrotnie używać korzystając wyłącznie z identyfikatora, którym może być, np. nazwa funkcji lub jej adres.

function suma(a, b){
  var c=a+b;
  return c;
}

Funkcje w JS zawsze zwracają wartość. Jeśli nie jest to zrobione jawnie przy pomocy return, to niejawnie zwracana jest wartość undefined.

Funkcja może zwrócić tylko jedną wartość. Jeżeli zajdzie potrzeba zwrócenia wielu, można skorzystać z tablicy elementów lub obiektu (obiekty zostaną omówione w kolejnych częściach kursu).

Funkcje wywołuje się tak jak w innych językach programowania. Należy użyć jej identyfikatora (nazwy) oraz nawiasów (), w których znajdzie się lista argumentów.

var wynik=suma(1,4);

Słowo o parametrach

Jeśli przekażesz do funkcji mniej parametrów niż potrzeba, to silnik JS przypisze wartość undefined do tych, które pominąłeś.

Z drugiej strony, jeżeli przekażesz więcej parametrów niż wymaga funkcja, to nadwyżka zostanie pominięta.

Możliwe jest tworzenie funkcji, które przyjmują zmienną ilość parametrów. Dzieje się to za sprawą tablicy arguments, która jest tworzona w każdej funkcji. Zawiera ona listę wszystkich argumentów, które zostały przekazane.

function args(){ return arguments; }

args(); //[]

args("a", "b", 3, 4); //["a", "b", 3, 4]

Aby uzyskać informację o liczbie elementów tablicy należy skorzystać z konstrukcji arguments.lengh. Taki zapis wygląda standardowo jeżeli korzystałeś wcześniej z obiektowego języka programowania. Szczegóły obiektów poznasz później. W rzeczywistości argumens to obiekt, zachowaniem przypominający tablicę.

Funkcje wbudowane

W JS występuje szereg funkcji standardowych, które opisałem poniżej.

parseInt() - przyjmuje parametr dowolnego typu i stara sie go zamienić na liczbę całkowitą. Drugim parametrem jest podstawa systemu zapisu liczby, która została przekazana jako pierwszy parametr. Jest on opcjonalny i jeśli go pominiesz, to funkcja założy, że przekazałeś liczbę dziesiętną. Warto o nim jednak zawsze pamiętać, aby nie było nieporozumień.

parseInt("8"); //8

parseInt("FF"); //NaN, nie istnieje taka liczba dziesiętna
parseInt("FF", 16); //255, ale szesnastkowa tak

parseFloat() - robi to samo co parseInt(), ale działa z liczbami zmiennoprzecinkowymi. Radzi sobie dobrze z notacją naukową.

isNaN() - sprawdza czy podany argument jest równy wartości NaN.

NaN===NaN; //false, ważne!!!

isNaN(NaN); //true
isNaN(123); //false
isNaN( parseInt(223) ); //false
isNaN( parseInt("abc") ); //true

isFinite() - sprawdza czy parametr funkcji jest poprawną liczbą skończoną.

isFinite(Infinity); //false
isFinite(44); //true
isFinite(NaN); //false
isFinite(5e309); //false

encodeURI() oraz encodeURIComponent() - pierwsza na podstawie przekazanego ciągu znaków postara się zwrócić poprawny URL. Funkcja druga założy, iż przekazano tylko fragment URL. Odwrotne działanie mają funkcje decodeURI() oraz decodeURIComponent().

eval() - przekazany ciąg znaków wykona jako kod JavaScript. Należy unikać tego sposobu wykonywania kodu jeśli to możliwe. Powody są dwa: bezpieczeństwo i wydajność. JS to potężny język programowania. Jeśli więc nie wiesz i nie ufasz parametrowi jaki będzie przekazany do eval, lepiej pomyśl nad innym rozwiązaniem. Jeśli chodzi o wydajność, to kod wykonany przy pomocy eval zawsze będzie działał wolniej.

eval( "var x=12; x;" );

alert() - nie jest częścią specyfikacji ECMA, ale bardzo często jest dostępna w przeglądarkach. Jej zadaniem jest pokazanie wiadomości w oknie dialogowym. Często się również przydaje do debugowania kodu. Jej działanie powoduje zatrzymanie wykonywania kodu, do momentu zatwierdzenia komunikatu przez użytkownika.

//wykonaj w swojej konsoli:
alert("Hej!");

W tym artykule to wszystko. Przejdź do następnej części:

Kurs obiektowego JavaScript (11)

Zobacz również
Kurs obiektowego JavaScript (8)Bloki warunkowe oraz pętle w JS.
Kurs obiektowego JavaScript (9)Komentowanie kodu i tworzenie dokumentacji.
Kurs obiektowego JavaScript (11)Zmienne globalne. Nietypowy zakres zmiennych lokalnych.
Kurs obiektowego JavaScript (12)Przedstawienie funkcji anonimowych i zwrotnych (callback).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.