Parametry funkcí JavaScriptu
JavaScript function
neprovádí žádnou kontrolu hodnot parametrů (argumentů).
Funkční parametry a argumenty
Dříve v tomto tutoriálu jste se dozvěděli, že funkce mohou mít parametry :
function functionName(parameter1, parameter2, parameter3) {
// code to be executed
}
Parametry funkce jsou názvy uvedené v definici funkce.
Argumenty funkce jsou skutečné hodnoty předané (a přijaté) funkcí.
Pravidla parametrů
Definice funkcí JavaScript neurčují datové typy pro parametry.
Funkce JavaScriptu neprovádějí kontrolu typu předávaných argumentů.
Funkce JavaScriptu nekontrolují počet přijatých argumentů.
Výchozí parametry
Pokud je funkce volána s chybějícími argumenty (méně než deklarovanými), jsou chybějící hodnoty nastaveny na
undefined
.
Někdy je to přijatelné, ale někdy je lepší přiřadit parametru výchozí hodnotu:
Příklad
function myFunction(x, y) {
if (y === undefined) {
y = 2;
}
}
ECMAScript 2015 umožňuje výchozí hodnoty parametrů v deklaraci funkce:
function myFunction(x, y = 2) {
// function code
}
Objekt Argumenty
Funkce JavaScriptu mají vestavěný objekt nazývaný objekt arguments.
Objekt argument obsahuje pole argumentů použitých při volání (vyvolání) funkce.
Tímto způsobem můžete jednoduše použít funkci k nalezení (například) nejvyšší hodnoty v seznamu čísel:
Příklad
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;
}
Nebo vytvořte funkci pro sečtení všech vstupních hodnot:
Příklad
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;
}
Pokud je funkce volána s příliš mnoha argumenty (více než deklarováno), lze tyto argumenty získat pomocí objektu arguments .
Argumenty jsou předávány hodnotou
Parametry ve volání funkce jsou argumenty funkce.
Argumenty JavaScriptu jsou předávány hodnotou : Funkce zná pouze hodnoty, nikoli umístění argumentu.
Pokud funkce změní hodnotu argumentu, nezmění původní hodnotu parametru.
Změny argumentů nejsou mimo funkci viditelné (odrážející se).
Objekty jsou předávány podle reference
V JavaScriptu jsou odkazy na objekty hodnotami.
Z tohoto důvodu se objekty budou chovat, jako by byly předány odkazem:
Pokud funkce změní vlastnost objektu, změní původní hodnotu.
Změny vlastností objektu jsou viditelné (odražené) mimo funkci.