Parametry funkcji JavaScript
JavaScript function
nie sprawdza wartości parametrów (argumentów).
Parametry funkcji i argumenty
Wcześniej w tym samouczku dowiedziałeś się, że funkcje mogą mieć parametry :
function functionName(parameter1, parameter2, parameter3) {
// code to be executed
}
Parametry funkcji to nazwy wymienione w definicji funkcji.
Argumenty funkcji są rzeczywistymi wartościami przekazywanymi (i odbieranymi) przez funkcję.
Zasady dotyczące parametrów
Definicje funkcji JavaScript nie określają typów danych dla parametrów.
Funkcje JavaScript nie wykonują sprawdzania typu przekazanych argumentów.
Funkcje JavaScript nie sprawdzają liczby otrzymanych argumentów.
Parametry domyślne
Jeśli funkcja zostanie wywołana z brakującymi argumentami (mniejszymi niż zadeklarowane), brakujące wartości są ustawiane na
undefined
.
Czasami jest to akceptowalne, ale czasami lepiej przypisać wartość domyślną do parametru:
Przykład
function myFunction(x, y) {
if (y === undefined) {
y = 2;
}
}
ECMAScript 2015 dopuszcza domyślne wartości parametrów w deklaracji funkcji:
function myFunction(x, y = 2) {
// function code
}
Obiekt argumentów
Funkcje JavaScript mają wbudowany obiekt zwany obiektem arguments.
Obiekt argumentu zawiera tablicę argumentów użytych podczas wywoływania (wywoływania) funkcji.
W ten sposób możesz po prostu użyć funkcji, aby znaleźć (na przykład) najwyższą wartość na liście liczb:
Przykład
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
let max = -Infinity;
for (let i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
Lub utwórz funkcję sumującą wszystkie wartości wejściowe:
Przykład
x = sumAll(1, 123, 500, 115, 44, 88);
function sumAll() {
let sum = 0;
for (let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
Jeśli funkcja zostanie wywołana ze zbyt dużą liczbą argumentów (więcej niż zadeklarowanych), do tych argumentów można uzyskać dostęp za pomocą obiektu arguments .
Argumenty są przekazywane przez wartość
Parametry w wywołaniu funkcji są argumentami funkcji.
Argumenty JavaScript są przekazywane przez wartość : funkcja poznaje tylko wartości, a nie lokalizacje argumentów.
Jeśli funkcja zmienia wartość argumentu, nie zmienia oryginalnej wartości parametru.
Zmiany w argumentach nie są widoczne (odzwierciedlane) poza funkcją.
Obiekty są przekazywane przez odniesienie
W JavaScript odwołania do obiektów są wartościami.
Z tego powodu obiekty będą zachowywać się tak, jakby były przekazywane przez referencję:
Jeśli funkcja zmienia właściwość obiektu, zmienia pierwotną wartość.
Zmiany właściwości obiektu są widoczne (odzwierciedlane) poza funkcją.