En JavaScript funktion
udfører ingen kontrol parameterværdier (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.
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.
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:
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>
ES6 tillader funktionsparametre at have standardværdier.
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>
Parameteren rest (...) tillader en funktion at behandle et ubestemt antal argumenter som en matrix:
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>
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:
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:
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.
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.
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.