funkcje JavaScript

Funkcja – grupa instrukcji w JS

 

Funkcje w JavaScript definiujemy poprzez (deklaracja funkcji, function declaration)

function myFunction() {

//code;

}

w nawiasach {} body funkcji, lista operacji, instrukcji – statements.

nazwa funkcji – określana dowolnie z zachowaniem zastrzeżeń takich samych jak przy tworzeniu nazw zmiennych.

wywołanie (stosowanie) funkcji – podanie nazwy funkcji wraz z ewentualnymi parametrami (argumentami) w nawiasach, (calling, invoking a function).

 

tworzenie wartości przez funkcję – funkcja zwraca wartość

funkcji można używać w większych wyrażeniach – console.log(Math.min(36, 33) + 300); -> 333

 

parametry – podane do zmiennych zadeklarowanych w ciele funkcji,

argument – wartości przekazywane funkcji podczas jej wywołania

 

Function użyte jako wyrażenie – tworzy wartość funkcyjną (function expression, expression kiedy zwraca wartość):


var Variable = function(r) {

console.log(r * r);

};

Function użyte jako instrukcja – deklaracja zmiennej, nadanie jej funkcji jako wartości:


function r (u, d) {

return u + d + a;

}

 

Poprawne definiowanie funkcji w najbardziej zewnętrznym bloku funkcji lub programu.

Nie definiuje się funkcji w bloku warunkowym lub pętli!

 

parametry funkcji:

function myFunction(param1, param2) {
  document.write('<' + param2 + '>' + param1 + '</' + param2 + '>');
}

myFunction('hellow Sweetheart!', 'h1'); 

parametr – zmienna przyjmująca wartość podaną podczas wywoływania funkcji.

return

wartość zwrotna funkcji, natychmiastowe wyjście z funkcji i przekazanie zwróconej wartości do kodu, brak wyrażenia po return – funkcja zwraca undefined

function myFunction(param1, param2){
  var total = param1 * param2;
  return total;
}        

var myTotal = myFunction(56, 75);
document.write('Total sumary is ' + myTotal);

 

bezpośrednie użycie funkcji w innej instrukcji:

function myFunction(param1, param2){
  var total = param1 * param2;
  return total;
}        

document.write('Total sumary is ' + myFunction(57, 75));

return jako ostatnia instrukcja,kończy funkcję, kod po return nie jest wykonywany.

 

Funkcje zwracają tylko jedną wartość.

 

funkcje zwrotne, callback

funkcja addEventListener kojarzy funkcje zwrotną z ze zdarzeniem (np click).Przeglądarka rejestuje skojarzenie, zapamiętuje referencje do funkcji zwrotnej i wywołuje je gdy dane zdarzenie nastapi.

W chwili wywoływania funkcji zwrotnej zmienne i parametry funkcji zawierajacej w sobie addEventListener już nie istnieją – zostały usunięte z pamięci po zakończeniu wykonywania kodu tej funkcji. Funkcja zwrotna 'przechywtuje” wartosci zmiennych i parametrów tej funkcji i wykorzystuje je gdy jest wywoływana.

 

Wartości w zmiennych w funkcji, wartości w zmiennych po za funkcją

zmienna lokalna – w funkcji, nie jest widoczna w kodzie po za funkcją

zmienna globalna – poza funkcją, ale funkcja ma do niej dostęp

var info = "I'm out function";
function notice(info){
  document.write(info);
}
notice("I'm in function" + '
');
document.write(info);

var info = "I'm out function";
function notice(){
  var info = "I'm in function"; 
  document.write(info + '
');
}
notice();
document.write(info);


var info = "I'm out function";
function notice(){
  document.write(info + '
');
}
notice();

 

Zmiana wartości zmiennej globalnej poprzez funkcję:

var info = "I'm out function";
function notice(){
  info = "I'm in function";
}
notice();
document.write(info);

Funkcje mają określony zasięg. Zmienne w funkcji nie są widoczne w kodzie po za funkcją.

 

Stos wywołań

miejsce przechowywania kontekstu (kontekst w którym nastąpiło wywołanie funkcji). Przy każdym wywołaniu funkcji na górę stosu jest umieszczany aktualny kontekst.

Po zakończeniu działania funkcji – zdjęcie wcześniejszego kontekstu z góry stosu i dalsze wykonanie programu.

 

Za mało pamięci dla dużego stosu – komunikat – brak miejsca dla stosu, za dużo rekurencji.

 

Argumenty

funkcja może przyjąć argumenty opcjonalne (więcej niż jest zadeklarowanych w funkcji). Nadmiarowe argumenty są pomijane, brakujące zastępowane wartością undefined. Funkcja console.log() wyświetla wszystkie przesłane jej wartości.

 

Funkcja rekurencyjna

wywołanie funkcji przez samą siebie bez przepełnienia stosu.

przydatna przy przetwarzaniu wielu gałęzi z których każda może mieć wiele odgałęzień.

 

Funkcja 'czysta’

nie wczytuje zmiennych globalnych, dla tych samych argumentów zwraca zawsze tą samą wartość (i nic więcej dodatkowego nie robi).

 

 

Czas wywołania

wywołanie prostej pętli jest znacznie szybsze niż wywołanie funkcji wiele razy.

 

funkcja anonimowa – bez nazwy, zapisana jako literał funkcyjny. Czesto uzywana jako argument innych funkcji, tzw callback (funkcje zwrotne) – funkcja która będzie wywołana w przyszłości w określonych warunkach.

 

 

Funkcja addEventListener

funkcja definiuje odbiornik (ang. listener) dla określonego zdarzenia i obiektu. Można dodać wiele funkcji listener.

 

Funkcja obsługi błędu – onerror

przypisanie funkcji do właściwości onerror obiektu window.


    function errorMessage(message, url, line) {
      alert("wystąpił błąd JS. \n" + "komunikat błędu: " + message + '\n' + "url: " + url + '\n' + "nr wiersza: " + line);
      return true;
    }
    window.onerror=errorMessage;

przy użyciu return: false; – otrzymamy również standardowy komunikat błędu.

 

Użycie try/catch

 

odwołanie do funkcji

  • z () – odwołanie do wyniku funkcji
  • bez () – odwołanie do samej funkcji