შესვლა

პროგრამირების საფუძვლები › დამწყები › ფუნქციები

პარამეტრები და არგუმენტები

მარტივი⏱ 7 წთ+20 XP👑 Pro#ფუნქციები#პარამეტრები#არგუმენტები

რას ისწავლი

  • როგორ გადასცე ფუნქციას მონაცემი პარამეტრით
  • რით განსხვავდება პარამეტრი (parameter) არგუმენტისგან (argument)
  • რა ხდება, როცა არგუმენტი აკლია ან ზედმეტია

ფუნქცია, რომელიც ყოველ ჯერზე სხვაგვარად მუშაობს

წინა თავის greet ყოველთვის ერთსა და იმავეს ბეჭდავდა. ნამდვილ პროგრამაში კი ყველას თავისი სახელით მივესალმებით. ამისთვის ფუნქციას მონაცემი უნდა გადავცეთ:

JavaScript
function greet(name) {
  console.log("გამარჯობა, " + name + "!");
}

greet("ანა");
greet("ლუკა");

იბეჭდება გამარჯობა, ანა! და გამარჯობა, ლუკა!. ფრჩხილებში ჩაწერილი name არის პარამეტრი (parameter): ცვლადი, რომელიც მხოლოდ ფუნქციის შიგნით არსებობს და გამოძახებისას მნიშვნელობას იღებს. გამოძახებისას ფრჩხილებში ჩაწერილი "ანა" კი არგუმენტია (argument): კონკრეტული მნიშვნელობა, რომელიც პარამეტრში ჩაიდება.

მოკლედ: პარამეტრი ცარიელი ყუთია ფუნქციის განსაზღვრაში, არგუმენტი ის, რასაც გამოძახებისას ყუთში დებ.

რამდენიმე პარამეტრი

პარამეტრი რამდენიც გინდა, იმდენი შეიძლება იყოს, მძიმით გამოყოფილი:

JavaScript
function introduce(name, age) {
  console.log(`მე ვარ ${name}, ${age} წლის.`);
}

introduce("ნინო", 12);
introduce("გიო", 13);

არგუმენტები პარამეტრებს რიგის მიხედვით უსადაგდება: პირველი არგუმენტი პირველ პარამეტრში ჩაიდება, მეორე მეორეში. სახელს აქ მნიშვნელობა არ აქვს. თუ დაწერ introduce(12, "ნინო"), დაიბეჭდება „მე ვარ 12, ნინო წლის.“ კომპიუტერი შენს ჩანაფიქრს ვერ გამოიცნობს.

პარამეტრი ციკლში

პარამეტრი ჩვეულებრივი ცვლადია, ამიტომ შეგიძლია ის ციკლში, პირობაში ან გამოთვლაში გამოიყენო:

JavaScript
function stars(count) {
  let line = "";
  for (let i = 1; i <= count; i++) {
    line += "*";
  }
  console.log(line);
}

stars(3);
stars(7);

ერთი ფუნქცია ახლა ნებისმიერი სიგრძის ხაზს ხატავს. ეს არის პარამეტრების მთავარი ძალა: ერთი წესი, ბევრი სხვადასხვა შედეგი.

არგუმენტად შეგიძლია გადასცე არა მხოლოდ რიცხვი ან ტექსტი, არამედ ცვლადიც და გამოსახულებაც: stars(level) ან stars(level * 2). კომპიუტერი ჯერ არგუმენტს ითვლის და ფუნქციას უკვე მზა მნიშვნელობას გადასცემს. პარამეტრის სახელი და გადაცემული ცვლადის სახელი ერთმანეთს არ უნდა ემთხვეოდეს: ფუნქციამ არ იცის და არც აინტერესებს, რა ერქვა ცვლადს გარეთ.

როცა არგუმენტი აკლია ან ზედმეტია

JavaScript გამოძახებისას არგუმენტების რაოდენობას არ ამოწმებს:

  • აკლია: პარამეტრი იღებს სპეციალურ მნიშვნელობას undefined, „განუსაზღვრელი“. greet() დაბეჭდავს გამარჯობა, undefined!.
  • ზედმეტია: დამატებითი არგუმენტები უბრალოდ იგნორირდება. greet("ანა", "ლუკა") მხოლოდ ანას მიესალმება.

თუ ეკრანზე მოულოდნელად undefined გამოჩნდა, ჯერ შეამოწმე, ყველა არგუმენტი გადაეცი თუ არა ფუნქციას.

სცადე თავად

გაუშვი, მერე დაამატე მესამე პარამეტრი city და დაბეჭდე ისიც.

JavaScript · სცადე თავად

ხშირი შეცდომები

  • არეული რიგი. არგუმენტები პარამეტრებს რიგით უსადაგდება. თუ ფუნქცია (name, age)-ს ელოდება, ჯერ სახელი გადაეცი.
  • ბრჭყალები პარამეტრის სახელზე. function greet("name") შეცდომაა. პარამეტრი ცვლადის სახელია და ბრჭყალების გარეშე იწერება. ბრჭყალები გამოძახებისას, ტექსტურ არგუმენტზე გჭირდება.
  • პარამეტრის გამოყენება ფუნქციის გარეთ. name მხოლოდ greet-ის შიგნით არსებობს. გარეთ ის ReferenceError-ს გამოიწვევს.

სავარჯიშო

დაწერე ფუნქცია printTable(number), რომელიც გადაცემული რიცხვის გამრავლების ტაბულას ბეჭდავს 1-დან 5-მდე, მაგალითად 3 x 1 = 3. გამოიძახე printTable(3) და printTable(8).

JavaScript · სცადე თავად
💡 მინიშნება

ფუნქციის შიგნით დაწერე for ციკლი 1-დან 5-მდე. შაბლონურ სტრიქონში ჩასვი ${number}, ${i} და ${number * i}.

✅ ამოხსნის ნახვა
JavaScript
function printTable(number) {
  for (let i = 1; i <= 5; i++) {
    console.log(`${number} x ${i} = ${number * i}`);
  }
}

printTable(3);
printTable(8);

მინი-ქვიზი

1function add(a, b)-ში რა არის a და b?

2რას დაბეჭდავს greet(), თუ function greet(name) { console.log("გამარჯობა, " + name); }?

3function show(a, b) { console.log(a); }. რას დაბეჭდავს show(5, 9)?

შეჯამება

  • პარამეტრი ფუნქციის ფრჩხილებში ჩაწერილი ცვლადია, არგუმენტი გამოძახებისას გადაცემული მნიშვნელობა.
  • არგუმენტები პარამეტრებს რიგით უსადაგდება.
  • არგუმენტი რომ აკლდეს, პარამეტრი undefined-ია. ზედმეტი არგუმენტი იგნორირდება.
  • პარამეტრი მხოლოდ ფუნქციის შიგნით არსებობს.
📝 ჩემი შენიშვნა