JavaScript-funktion parametrit


Sisällysluettelo

    Näytä sisällysluettelo


JavaScriptin funktio ei suorita mitään tarkistusta parametriarvot (argumentit).


Funktioparametrit ja 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).


Parametrisäännöt

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ää.


Oletusparametrit

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:

Esimerkki

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>



Parametrien oletusarvot

ES6 sallii toimintoparametreille oletusarvot.

Esimerkki

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>

Function Rest -parametri

Loput-parametri (...) sallii funktion käsitellä määräämättömän määrän argumentteja taulukkona:

Esimerkki

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>


Argumentit-objekti

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:

Esimerkki

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:

Esimerkki

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.


Argumentit ohitetaan arvolla

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.


Objektit ohitetaan viitteellä

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.