Функцүүд
Код бичихэд нэг ажлыг олон газар давтах шаардлага байнга гардаг. Жишээлбэл хэрэглэгчийг мэндлэх, XP нэмэх, алдааг бүртгэх — эдгээрийг хаа сайгүй дахин дахин бичэж суухын оронд нэг удаа функц болгон тодорхойлоод шаардлагатай үедээ дуудна. Функц нь код дахин ашиглах, зохион байгуулах үндэс суурь юм.
Функц тодорхойлох ба дуудах
function түлхүүр үгээр функц тодорхойлно. Нэр өгөөд () хаалтанд параметрүүдийг заана. {} хаалт дотор ажиллах кодыг бичнэ.
function greet() {
console.log("Сайн байна уу!");
}
// Функцийг дуудах
greet(); // Сайн байна уу!
greet(); // Сайн байна уу!
greet(); // Сайн байна уу!
Функцийг нэг удаа тодорхойлоод хэдэн ч удаа дуудаж болно.
Параметр ба аргумент
Функц дотор гаднаас мэдээлэл дамжуулахад параметр (parameter) ашиглана. Функц дуудах үед дамжуулдаг бодит утгыг аргумент (argument) гэдэг.
function greet(name) {
// name — параметр
console.log(`Сайн байна уу, ${name}!`);
}
greet("Болд"); // "Болд" — аргумент
greet("Номин");
greet("Дорж");
// Сайн байна уу, Болд!
// Сайн байна уу, Номин!
// Сайн байна уу, Дорж!
Олон параметр дамжуулж болно:
function addXP(playerName, amount) {
console.log(`${playerName} — +${amount} XP авлаа!`);
}
addXP("Болд", 10);
addXP("Номин", 50);
// Болд — +10 XP авлаа!
// Номин — +50 XP авлаа!
return — утга буцаах
Функц зөвхөн хэвлэхээс гадна утга буцааж болно. return түлхүүр үгийн дараах утгыг буцаана.
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 хийгдсэн даруй функц зогсдог — дараагийн мөрүүд ажиллахгүй:
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)
Аргумент дамжуулахгүй тохиолдолд ашиглах өгөгдмөл утга тавьж болно.
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 гэдэг.
function calculateBonus() {
let bonus = 100; // local хувьсагч
return bonus;
}
calculateBonus();
console.log(bonus); // ❌ Алдаа — bonus энд харагдахгүй
Жишээ: XP шагналын систем
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-д маш өргөн хэрэглэгддэг.