JavaScriptin funktio ei suorita mitään tarkistusta parametriarvot (argumentit).
Aiemmin tässä opetusohjelmassa opit, että funktioilla voi olla parametrit:
function functionName(parameter1, parameter2, parameter3) {
// code to be executed
}Toimintojen parametrit ovat nimiä, jotka on lueteltu funktion määritelmä.
Funktioiden argumentit ovat todellisia arvoja funktiolle siirretty (ja sen vastaanottama).
JavaScript-funktion määritelmät eivät määritä tietotyyppejä parametrit.
JavaScript-funktiot eivät suorita tyyppitarkistusta hyväksytyille argumentteja.
JavaScript-funktiot eivät tarkista vastaanotettujen argumenttien määrää.
Jos funktiota kutsutaan puuttuvilla argumenteilla (vähemmän kuin ilmoitettu), puuttuvat arvot asetetaan määrittämätön.
Joskus tämä on hyväksyttävää, mutta joskus on parempi määrittää oletusarvo parametrin arvo:
function myFunction(x, y) {
if (y === undefined) {
y = 2;
}
}Kokeile itse →
<!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 sallii toimintoparametreille oletusarvot.
Jos y ei ole hyväksytty tai määrittelemätön, niin y=10.
function myFunction(x, y = 10) { return x + y;
}
myFunction(5);Kokeile itse →
<!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>
Loput-parametri (...) sallii funktion käsitellä määräämättömän määrän argumentteja taulukkona:
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);Kokeile itse →
<!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-funktioissa on sisäänrakennettu objekti, jota kutsutaan argumenteiksi esine.
Argumenttiobjekti sisältää joukon argumentteja, joita käytetään funktiossa kutsuttiin (kutsuttiin).
Tällä tavalla voit yksinkertaisesti käyttää funktiota löytääksesi (esimerkiksi) korkeimman arvo numeroluettelossa:
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;
}Kokeile itse →
<!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>
Tai luo funktio kaikkien syötettyjen arvojen summaamiseksi:
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;
}Kokeile itse →
<!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>
Jos funktiota kutsutaan liian monella argumentilla (enemmän kuin ilmoitettu), nämä argumentit voidaan saavuttaa käyttämällä argumenttiobjektia.
Funktiokutsussa parametrit ovat funktion argumentteja.
JavaScript-argumentit välittää arvo: vain funktio oppii tuntemaan arvot, ei argumentin paikkoja.
Jos funktio muuttaa argumentin arvoa, se ei muuta parametrin arvoa alkuperäinen arvo.
Argumenttien muutokset eivät näy (heijastu) funktion ulkopuolella.
JavaScriptissä objektiviittaukset ovat arvoja.
Tämän vuoksi objektit käyttäytyvät kuin ne olisivat ohitettu viittauksella:
Jos funktio muuttaa objektin ominaisuutta, se muuttaa alkuperäistä arvoa.
Objektin ominaisuuksien muutokset näkyvät (heijastuvat) funktion ulkopuolella.