Parametry funkcí JavaScriptu


Obsah

    Zobrazit obsah


funkce JavaScriptu neprovádí žádnou kontrolu hodnoty parametrů (argumenty).


Parametry a argumenty funkcí

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 funkcí jsou názvy uvedené v definice funkce.

Funkční argumenty jsou skutečné hodnoty předaný (a přijatý) funkcí.


Pravidla parametrů

Definice funkcí JavaScriptu neurčují datové typy pro parametry.

Funkce JavaScriptu neprovádějí kontrolu typu předávaných argumenty.

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é), chybějící hodnoty jsou nastaveny na nedefinováno.

Někdy je to přijatelné, ale někdy je lepší přiřadit výchozí hodnota parametru:

Příklad

function myFunction(x, y) {
    if (y === undefined) {
    y = 2;
     }

}

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<p>Setting a default value to a function parameter.</p>
<p id="demo"></p>

<script>
function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }  
  return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>

</body>
</html>



Výchozí hodnoty parametrů

ES6 umožňuje, aby parametry funkcí měly výchozí hodnoty.

Příklad

Pokud y není předáno nebo není definováno, pak y=10.

function myFunction(x, y = 10) {	  return x + y;
}
myFunction(5);

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>Default Parameter Values</h2>
<p>If y is not passed or undefined, then y = 10:</p>

<p id="demo"></p>

<script>
function myFunction(x, y = 10) {
  return x + y;
}
document.getElementById("demo").innerHTML = myFunction(5);
</script>

</body>
</html>

Parametr zbytku funkce

Parametr rest (...) umožňuje funkci zacházet s neurčitým počtem argumentů jako s polem:

Příklad

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Functions</h1>
<h2>The Rest Parameter</h2>

<p>The rest parameter (...) allows a function to treat an indefinite number of arguments as an array:</p>

<p id="demo"></p>

<script>
function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);

document.getElementById("demo").innerHTML = x;
</script>

</body>
</html>


Objekt Argumenty

Funkce JavaScriptu mají vestavěný objekt zvaný argumenty objekt.

Objekt argument obsahuje pole argumentů použitých při funkci byl volán (přivolán).

Tímto způsobem můžete jednoduše použít funkci k nalezení (například) nejvyšší hodnota 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;
}

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Finding the largest number.</p>
<p id="demo"></p>

<script>
function findMax() {
  let max = -Infinity;
  for(let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
} 
document.getElementById("demo").innerHTML = findMax(4, 5, 6);
</script>

</body>
</html>


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;
}

Zkuste to sami →

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Functions</h2>
<p>Sum of all arguments:</p>
<p id="demo"></p>

<script>
function sumAll() {
  let sum = 0;
  for(let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}
document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88);
</script>

</body>
</html>

Pokud je funkce volána s příliš mnoha argumenty (více než deklarováno), tyto argumenty lze 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: Pouze funkce zná hodnoty, nikoli umístění argumentu.

Pokud funkce změní hodnotu argumentu, nezmění ani parametr původní hodnota.

Změny argumentů nejsou viditelné (odráží se) mimo funkci.


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.