JavaScript-funktionsparametre


Indholdsfortegnelse

    Vis indholdsfortegnelse


En JavaScript funktion udfører ingen kontrol parameterværdier (argumenter).


Funktionsparametre og argumenter

Tidligere i denne vejledning lærte du, at funktioner kan have parametre:

function functionName(parameter1, parameter2, parameter3) {
    // code to be executed
}

Funktions parametre er de navne, der er angivet i funktionsdefinitionen.

Funktions argumenter er de reelle værdier videregivet til (og modtaget af) funktionen.


Parameterregler

JavaScript-funktionsdefinitioner angiver ikke datatyper for parametre.

JavaScript-funktioner udfører ikke typekontrol på bestået argumenter.

JavaScript-funktioner kontrollerer ikke antallet af modtagne argumenter.


Standardparametre

Hvis en funktion kaldes med manglende argumenter (mindre end deklareret), sættes de manglende værdier til udefineret.

Nogle gange er dette acceptabelt, men nogle gange er det bedre at tildele en standard værdi til parameteren:

Eksempel

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

}

Prøv det selv →

<!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>



Standardparameterværdier

ES6 tillader funktionsparametre at have standardværdier.

Eksempel

Hvis y ikke er bestået eller udefineret, er y=10.

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

Prøv det selv →

<!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>

Funktion hvileparameter

Parameteren rest (...) tillader en funktion at behandle et ubestemt antal argumenter som en matrix:

Eksempel

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

Prøv det selv →

<!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>


Argumenterne Objekt

JavaScript-funktioner har et indbygget objekt kaldet argumenterne objekt.

Argumentobjektet indeholder en række af de argumenter, der bruges, når funktionen blev kaldt (påkaldt).

På denne måde kan du blot bruge en funktion til at finde (for eksempel) den højeste værdi i en liste med tal:

Eksempel

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

Prøv det selv →

<!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>


Eller opret en funktion til at summere alle inputværdier:

Eksempel

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

Prøv det selv →

<!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>

Hvis en funktion kaldes med for mange argumenter (flere end erklæret), disse argumenter kan nås ved hjælp af argumentobjektet.


Argumenter passeres af værdi

Parametrene i et funktionskald er funktionens argumenter.

JavaScript-argumenter sendes af værdi: Kun funktionen lærer værdierne at kende, ikke argumentets placeringer.

Hvis en funktion ændrer et arguments værdi, ændrer den ikke parameterens oprindelige værdi.

Ændringer af argumenter er ikke synlige (afspejles) uden for funktionen.


Objekter videregives ved reference

I JavaScript er objektreferencer værdier.

På grund af dette vil objekter opføre sig, som om de passeres af reference:

Hvis en funktion ændrer en objektegenskab, ændrer den den oprindelige værdi.

Ændringer af objektegenskaber er synlige (afspejles) uden for funktionen.