jesteś tutaj
133
Przedstawienie funkcji
Już wiesz, jak definiować i wywoływać funkcje, teraz upewnimy się, czy
doskonale rozumiesz i pamiętasz ich składnię. Poniżej przedstawiliśmy
wszystkie elementy anatomii funkcji.
Anatomia funkcji
function addScore ( level , score ) {
var bonus = level * score * .1;
return score + bonus;
}
Zawsze zaczynamy
od słowa kluczowego
„function”.
Za słowem kluczowym function
podawana jest nazwa funkcji.
Jeśli nawet funkcja nie
będzie mieć żadnych
parametrów, to i tak ta
para nawiasów — ( ) —
musi się znaleźć za jej
nazwą.
A następnie dowolna liczba argumentów
(w tym żadnego), oddzielonych od siebie
przecinkami i zapisanych wewnątrz
pary nawiasów.
Ciało funkcji
jest zapisywane
pomiędzy parą
nawiasów
klamrowych i składa
się z sekwencji
instrukcji (dokładnie
takich samych jak
wszystkie inne
instrukcje).
Funkcja może, choć nie
musi, zawierać instrukcję
return.
Instrukcja return zawiera zmienną
lub wyrażenie określające wartość,
która zostanie zwrócona jako
wynik wywołania funkcji.
Oto zamykający
nawias klamrowy,
kończący ciało funkcji.
Zmienne potrzebne
do działania funkcji
należy deklarować
w jej ciele.
P
: Co się stanie, kiedy pomylę
kolejność argumentów, czyli przekażę
argumenty do nieprawidłowych
parametrów?
O
:
Kiepska sprawa; można sądzić, że
niemal na pewno spowoduje to wystąpienie
błędu lub nieprawidłowe działanie kodu.
Zawsze uważnie sprawdzaj parametry
funkcji, by dokładnie wiedzieć, jakie
argumenty należy do niej przekazać.
P
: Dlaczego przed nazwami
parametrów nie ma słowa kluczowego
var
? Przecież parametry są nowymi
zmiennymi, prawda?
O
:
Właściwie tak. Funkcja sama zajmuje się
utworzeniem wszystkich zmiennych, dlatego
w przypadku parametrów stosowanie słowa
kluczowego var nie jest konieczne.
P
: Jakie są zasady określania nazw
funkcji?
O
:
Są to te same zasady, którym
podlegają nazwy zmiennych. Podobnie
jak w przypadku zmiennych, chcemy, by
nazwy funkcji miały sens, gdy będziemy
analizować kod, i przekazywały jakieś
wskazówki dotyczące tego, co funkcja
robi. W przypadku nazw składających się
z większej liczby słów warto także stosować
konwencję
camelCase
, tak samo jak
podczas określania nazw zmiennych.
P
: Co się stanie, kiedy parametr
funkcji oraz jej argument będą miały
tę samą nazwę, np. x?
O
:
Jeśli nawet parametr funkcji
i przekazany do niej argument będą miały
taką samą nazwę, np. x, to w parametrze
x zostanie zapisana kopia wartości
argumentu x; a zatem będą dwiema
odrębnymi zmiennymi. Zmiana wartości
parametru x nie spowoduje zmiany
wartości argumentu x.
P
: Co zwraca funkcja, jeśli nie
użyjemy w niej instrukcji
return
?
O
:
Funkcja bez instrukcji return zwraca
undefined.
głupie pytania
Nie istnieją
134
Rozdział 3.
Deklaracje zmiennych lokalnych
Dobre pytanie. Odpowiedź brzmi: i tak, i nie
Deklaracje umieszczane wewnątrz funkcji działają
dokładnie tak samo jak te umieszczane poza
funkcjami, przynajmniej w tym sensie, że powodują
utworzenie zmiennej i zapisanie w niej podanej
wartości początkowej. Jednak różnica pomiędzy
zmienną zadeklarowaną
poza funkcją oraz zmienną
zadeklarowaną
wewnątrz funkcji sprowadza się do tego,
gdzie są używane zmienne — innymi słowy, w których
miejscach kodu możemy się do tych zmiennych
odwoływać. Jeśli zmienna zostanie zadeklarowana
poza funkcją, będziesz mógł się do niej odwoływać
w
dowolnym miejscu kodu. Jeśli natomiast zmienna
zostanie zadeklarowana wewnątrz funkcji, będziesz
mógł jej używać jedynie
wewnątrz tej funkcji. Jest to
tzw.
zasięg zmiennej. Istnieją dwa rodzaje tego zasięgu,
globalny i lokalny.
Zauważyłem, że zaczęliście
umieszczać deklaracje
zmiennych bezpośrednio wewnątrz
funkcji. Czy takie deklaracje
działają tak samo jak te, które
umieszczane są poza funkcjami?
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.