Skip to content

Funktsioonid ​

Õpieesmärgid ​

Selle peatüki lõpuks peaks õppija:

  • mõistma, miks funktsioone kasutatakse
  • oskama kirjutada funktsiooni deklaratsiooni ja noolfunktsiooni
  • oskama kasutada parameetreid ja argumente
  • mõistma return võtmesõna rolli
  • oskama eristada väärtuse tagastamist ja konsooli väljastamist
  • mõistma funktsiooni skoobi põhimõtet

Miks funktsioone vaja on? ​

Funktsioon on korduvkasutatav koodiplokk. Kui programmis on tegevus, mida on vaja teha mitu korda, tasub see panna funktsiooni sisse.

Näiteks veebipoes võib olla vaja arvutada soodushinda mitmes kohas: toote kaardil, ostukorvis ja tellimuse kinnituses. Kui arvutus on funktsioonis, ei pea sama loogikat igale poole kopeerima.

js
function calculateDiscountPrice(price, discountPercent) {
  return price - price * (discountPercent / 100);
}

const finalPrice = calculateDiscountPrice(100, 20);

console.log(finalPrice); // 80

Funktsiooni deklaratsioon ​

Funktsiooni saab luua function märksõnaga.

js
function greetUser(name) {
  return `Tere, ${name}!`;
}

console.log(greetUser("Mari")); // "Tere, Mari!"

Funktsiooni nimi peaks kirjeldama tegevust. Hea nimi algab tihti tegusõnaga: calculateTotal, validateEmail, getAverageGrade.

Parameetrid ja argumendid ​

Parameeter on funktsiooni sisendis olev nimi. Argument on tegelik väärtus, mis funktsiooni kutsumisel kaasa antakse.

js
function addNumbers(a, b) {
  return a + b;
}

addNumbers(2, 3);

Siin on a ja b parameetrid. Väärtused 2 ja 3 on argumendid.

return ​

return tagastab funktsioonist väärtuse. Tagastatud väärtust saab salvestada muutujasse või kasutada teises arvutuses.

js
function isPositiveGrade(grade) {
  return grade >= 3;
}

const result = isPositiveGrade(4);

console.log(result); // true

Oluline erinevus:

js
function showGrade(grade) {
  console.log(grade);
}

function getGrade(grade) {
  return grade;
}

console.log() ainult näitab väärtust konsoolis. return annab väärtuse funktsioonist välja.

Noolfunktsioon ​

Noolfunktsioon on lühem viis funktsiooni kirjutamiseks.

js
const multiply = (a, b) => {
  return a * b;
};

console.log(multiply(4, 5)); // 20

Kui funktsioon koosneb ainult ühest avaldisest, saab return kirjutada lühemalt:

js
const multiply = (a, b) => a * b;

Alguses on täiesti sobiv kasutada pikemat kuju, sest see on lihtsamalt loetav.

Funktsiooni skoop ​

Funktsiooni sees loodud muutuja on nähtav ainult selle funktsiooni sees.

js
function calculateTotal(price, quantity) {
  const total = price * quantity;
  return total;
}

console.log(calculateTotal(10, 3)); // 30
// console.log(total); // viga: total on nähtav ainult funktsiooni sees

See aitab vältida olukorda, kus üks programmi osa muudab kogemata teise osa muutujaid.

Päris näide: vormi kontrollimine ​

js
function isValidUserName(userName) {
  return userName.trim().length >= 2;
}

console.log(isValidUserName("Mari")); // true
console.log(isValidUserName(""));     // false
console.log(isValidUserName(" A "));  // false

Sellist funktsiooni saaks hiljem kasutada veebivormis enne andmete saatmist.

Levinud vead ​

Funktsioon arvutab väärtuse, aga ei tagasta seda:

js
function calculateTotal(price, quantity) {
  const total = price * quantity;
}

const result = calculateTotal(10, 2);
console.log(result); // undefined

Õige variant:

js
function calculateTotal(price, quantity) {
  return price * quantity;
}

Teine levinud viga on liiga palju vastutust ühes funktsioonis. Hea funktsioon teeb ühe selge asja.

Harjutused ​

  1. Kirjuta funktsioon greetUser, mis võtab nime ja tagastab tervituse.
  2. Kirjuta funktsioon calculateCartTotal, mis võtab hinna ja koguse ning tagastab kogusumma.
  3. Kirjuta funktsioon isAdult, mis kontrollib, kas vanus on vähemalt 18.
  4. Kirjuta funktsioon getAverageGrade, mis arvutab hinnete massiivi keskmise.
  5. Selgita oma sõnadega, mis vahe on console.log() ja return kasutamisel.

Õppematerjal sisekasutuseks (Kuressaare Ametikool).