jak wywoływac funkcje w javascript

Kontekst wywołania funkcji

Każda funkcja w JavaScript posiada dwa obiekty z nią skojarzone:

  • this – kontekst wywołania
  • arguments – (array-like object) lista argumentów przekazanych przy wywołaniu

Zobaczmy, jak wyglada to w praktyce:

function example1()
{
    console.log('this: ', this, ', arguments: ', arguments);
}
example1();

Fragmenty kodu umieszczone w tym artykułe można uruchamiać w konsoli przeglądarki. Konsola ta najczęściej dostępna jest po wcisnięciu F12.

W wyniku wywołania funkcji `example1’ otrzymamy w konsoli:

this: Window, arguments: []

Jak widać przy wywołaniu takiej funkcji bez parametrów `this’ przyjmuje wartość obiektu globalnego `window’, natomiast `arguments’ jest pustą listą.

Może właśnie zapytałeś: “Jeśli `this’ === `windows’, to czy zmienne globalne są właściwościami obiektu `window’?

Sprawdźmy:

function example2()
{
    window.console.log(this===window);
}
window.example2();

W wyniku wywołania funkcji `window.example2’ otrzymamy: `true’. Zatem – tak, zmienne globalne w skryptach uruchamianych w przeglądarce są właściwościami obiektu globalnego `window’. Domyślnym kontekstem dla skryptów uruchamianych w normalnym trybie w przeglądarkach jest właśnie `window’. Sprawę trochę zmienia (porządkuje) tryb ścisły, o którym nie będę pisał w tym poście. Jest to temat na osobny artykuł.

Operator `new’

Skoro już wiemy, że domyślnie `this’ wskazuje na obiekt globalny, to co należy zrobić, aby powiąząć `this’ z aktualnym obiektem?

rozwiązanie 1:

var obj = {
    x : 'jestem wartością obj.x',
    test : function() { console.log(this.x); }
};
obj.test(); // w konsoli pokaże się "jestem wartością obj.x"

rozwiązanie 2:

function Constructor()
{
    this.x = 'jestem wartością Constructor.x';
    this.test = function() { console.log(this.x); }
};
(new Constructor()).test(); // w konsoli pokaże się "jestem wartością Constructor.x"

W obu przypadkach zarówno pole `x’, jak i pole `test’ (będące referencją na funkcję) są publiczne. Można odwołać się:

obj.x;
(new Constructor()).x;

lub nawet nadpisać te wartości. JavaScript pozwala na to. Najczęściej jednak NIE należy tego robić.

autor : Wojciech Buczek

Źródło: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility

Co to jest instrukcja przetwarzania warunkowego w JavaScript

Instrukcja przetwarzania warunkowego pozwala na zastąpienie bloku if..else w niektórych przypadkach. Przypisuje się je często do zmiennych. Konstrukcja tej instrukcji wygląda następującą:

(wyrażenie warunkowe) wartość1 : wartość2

I wypadało by to wytłumaczyć, tak więc czyta się to tak: jeżeli wyrażenie warunkowejest prawdziwe to całość przyjmuje wartość1, a jeśli jest fałszywe przyjmuje wartość2. Mam nadzieję, że jest to zrozumiałe, a teraz czas na jakiś przykład który sprawdza czy liczba jest dodatnia czy ujemna:

<script type=”text/javascript”>
<!– ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
var x = prompt(„Podaj liczbę: „);
var wynik = (x < 0)? „ujemna”:”dodatnia”;
document.write(„Ta liczba jest: „+wynik);
// koniec kodu JavaScrip t–>
</script>

A teraz przedstawię to za pomocą użycia instrukcji if..else:

<script type=”text/javascript”>
<!– ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
var x = prompt(„Podaj liczbę: „);
var wynik;
if(x < 0) 
{
    wynik = „ujemna”;
} else wynik = „dodatnia”;
document.write(„Ta liczba jest: „+wynik);
// koniec kodu JavaScript –>
</script>
Mam nadzieję, że wszyscy to rozumieją, bo nie jest to trudne. Przetwarzanie warunkowe można również zastosować tak:
<script type=”text/javascript”>
<!– ukrycie kodu przed przeglądarkami nie obsługujących JavaScript
document.write(„Ta liczba jest: ” + (((prompt(„Podaj liczbę: „)<0)? „ujemna”:”dodatnia”));
// koniec kodu JavaScript –>
</script>
Jest to może bardziej zawiły kod, ale jeśli zastosujemy taki zapis, nie będziemy musieli używać zmiennych pomocniczych.
Autor: 
Źródło: http://e-masayashi.blogspot.com/

Jak definiowac funkcje w javascript

Definiowanie funkcji

Na definicję funkcji składają się słowa:

  • Nazwa funkcji.
  • Lista argumentów funkcji, otoczona w nawiasach i oddzielona przecinkami.
  • Instrukcje JavaScript, które definiują funkcje, otoczone w nawiasach klamrowych, { }. Instrukcje w funkcji zawierają nazwę do innych funkcji zdefiniowane do aktualnej aplikacji.

Na przykład, następujący kod definiuje prostą funkcję nazwaną square:

function square(number) {
   return number * number;
}

Funkcja square bierze jeden argument, nazwany number. Funkcja składa się z jednej instrukcji, która sygnalizuje zwrot argumentu funkcji pomnożonej przez samą siebie. Instrukcja return określa wartość zwracanej funkcji.

return number * number

Wszystkie parametry są przekazywane do funkcji przez wartość; wartość zostaje przekazana do funkcji, ale jeżeli w funkcji wartość parametru zostanie zmieniona, zmiana ta nie będzie widoczna globalnie an. Jednakże, jeżeli przekażesz obiekt jako parametr funkcji, a funkcja zmieni właściwości obiektu, zmiana ta będzie widoczna poza funkcją, tak jak w następującym przykładzie:

function myFunc(theObject) {
   theObject.make="Toyota"
}

mycar = {make:"Honda", model:"Accord", year:1998};
x=mycar.make;     // zwraca Honda
myFunc(mycar);    // przechodzi obiekt mycar do funkcji
y=mycar.make;     // zwraca Toyota (porada: was changed by the function)

Zdefiniowana funkcja jest oparta na warunku. Na przykład, dając następującą definicje funkcji:

if (num == 0)
{
   function myFunc(theObject) {
   theObject.make="Toyota"
   }
}

Funkcja myFunc jest tylko zdefiniowana jeśli zmienna num równa się 0. Jeśli num nie jest równe 0, funkcja nie jest zdefiniowana i jakiekolwiek inne próby nie zostaną wykonane.

Oprócz opisanego tu definiowania funkcji, możliwe jest także definiowanie Function objects.

Metoda jest to połączenie funkcji z obiektem. Możesz się nauczyć więcej o obiektach i metodach w Obiekt function

Funkcja może być także zdefiniowana wewnątrz wyrażenia. Jest to nazwane wyrażeniem funkcyjnym. Typowo takie funkcje są anonimowe – nie mają nazwy. Na przykład, funkcja square może być zdefiniowana jako:

const square = function(number) {return number * number};

To jest konwencja kiedy przekazujesz jako funkcję jako argument do następnej funkcji. Następujący przykład pokazuje mapę funkcji będących zdefiniowanymi i następnie nazwane z funkcją, a jako pierwszą funkcją będzie parametr:

function map(f,a) {
   var result=new Array;
   for (var i = 0; i != a.length; i++)
      result[i] = f(a[i]);
   return result;
}

Wywołuje:

map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);

Zwraca [0, 1, 8, 125, 1000].

autor: Dawid Wójcik

źródło : https://developer.mozilla.org/pl/docs/Web/JavaScript/Guide/Obsolete_Pages/Przewodnik_po_j%C4%99zyku_JavaScript_1.5/Definiowanie_funkcji