JavaScript үндэс / Функцүүд

Функцүүд

Код бичихэд нэг ажлыг олон газар давтах шаардлага байнга гардаг. Жишээлбэл хэрэглэгчийг мэндлэх, XP нэмэх, алдааг бүртгэх — эдгээрийг хаа сайгүй дахин дахин бичэж суухын оронд нэг удаа функц болгон тодорхойлоод шаардлагатай үедээ дуудна. Функц нь код дахин ашиглах, зохион байгуулах үндэс суурь юм.

Функц тодорхойлох ба дуудах

function түлхүүр үгээр функц тодорхойлно. Нэр өгөөд () хаалтанд параметрүүдийг заана. {} хаалт дотор ажиллах кодыг бичнэ.

javascript
function greet() {
  console.log("Сайн байна уу!");
}

// Функцийг дуудах
greet(); // Сайн байна уу!
greet(); // Сайн байна уу!
greet(); // Сайн байна уу!

Функцийг нэг удаа тодорхойлоод хэдэн ч удаа дуудаж болно.

Параметр ба аргумент

Функц дотор гаднаас мэдээлэл дамжуулахад параметр (parameter) ашиглана. Функц дуудах үед дамжуулдаг бодит утгыг аргумент (argument) гэдэг.

javascript
function greet(name) {
  // name — параметр
  console.log(`Сайн байна уу, ${name}!`);
}

greet("Болд"); // "Болд" — аргумент
greet("Номин");
greet("Дорж");
// Сайн байна уу, Болд!
// Сайн байна уу, Номин!
// Сайн байна уу, Дорж!

Олон параметр дамжуулж болно:

javascript
function addXP(playerName, amount) {
  console.log(`${playerName} — +${amount} XP авлаа!`);
}

addXP("Болд", 10);
addXP("Номин", 50);
// Болд — +10 XP авлаа!
// Номин — +50 XP авлаа!

return — утга буцаах

Функц зөвхөн хэвлэхээс гадна утга буцааж болно. return түлхүүр үгийн дараах утгыг буцаана.

javascript
function add(a, b) {
  return a + b;
}

let result = add(10, 20);
console.log(result); // 30

console.log(add(5, 7)); // 12
console.log(add(100, 200)); // 300

return хийгдсэн даруй функц зогсдог — дараагийн мөрүүд ажиллахгүй:

javascript
function checkAge(age) {
  if (age < 0) {
    return "Буруу оролт"; // Энд зогсоно
  }

  if (age >= 18) {
    return "Насанд хүрсэн";
  }

  return "Насанд хүрээгүй";
}

console.log(checkAge(25)); // Насанд хүрсэн
console.log(checkAge(15)); // Насанд хүрээгүй
console.log(checkAge(-1)); // Буруу оролт

Өгөгдмөл параметр (Default parameter)

Аргумент дамжуулахгүй тохиолдолд ашиглах өгөгдмөл утга тавьж болно.

javascript
function greet(name = "хэрэглэгч", lang = "mn") {
  if (lang === "mn") {
    console.log(`Сайн байна уу, ${name}!`);
  } else {
    console.log(`Hello, ${name}!`);
  }
}

greet("Болд"); // Сайн байна уу, Болд!
greet("Bold", "en"); // Hello, Bold!
greet(); // Сайн байна уу, хэрэглэгч!

Функцийн хамрах хүрээ

Функц дотор зарласан хувьсагч зөвхөн тэр функцийн доторх байдаг — гаднаас харагдахгүй. Үүнийг local scope гэдэг.

javascript
function calculateBonus() {
  let bonus = 100; // local хувьсагч
  return bonus;
}

calculateBonus();
console.log(bonus); // ❌ Алдаа — bonus энд харагдахгүй

Жишээ: XP шагналын систем

javascript
function getLevelName(level) {
  if (level >= 10) return "Мастер";
  if (level >= 5) return "Дунд";
  return "Эхлэгч";
}

function awardXP(player, xpEarned) {
  const newXP = player.xp + xpEarned;
  const levelUp = Math.floor(newXP / 100) > Math.floor(player.xp / 100);

  player.xp = newXP;

  if (levelUp) {
    player.level++;
    console.log(`🎉 Түвшин ахиллаа! Одоо ${getLevelName(player.level)}.`);
  }

  console.log(`${player.name} — XP: ${player.xp}, Түвшин: ${player.level}`);
}

const user = { name: "Болд", xp: 90, level: 1 };
awardXP(user, 10);
awardXP(user, 50);
// 🎉 Түвшин ахиллаа! Одоо Эхлэгч.
// Болд — XP: 100, Түвшин: 2
// Болд — XP: 150, Түвшин: 2

Дараагийн хичээлд:

Arrow функцийг судлана — функц бичих богино, орчин үеийн хэлбэр бөгөөд JavaScript-д маш өргөн хэрэглэгддэг.