while давталт
for давталт нь хэдэн удаа давтахаа урьдчилан мэдэх үед хэрэглэнэ. Харин хэдэн удаа давтахыг мэдэхгүй, зөвхөн зогсоох нөхцлийг мэддэг үед while давталт хамгийн тохиромжтой.
Жишээлбэл хэрэглэгч зөв нууц үг оруулах хүртэл дахин асуах, тоглоом game over болох хүртэл үргэлжлэх, файлын мөр дуусах хүртэл унших — бүгд while-д тохиромжтой.
while бүтэц
while (нөхцөл) {
// нөхцөл үнэн байх хүртэл давтагдана
}
Нөхцөл true байх бүрт дотор хэсэг ажиллана. Нөхцөл false болмогц давталт зогсоно.
let count = 0;
while (count < 5) {
console.log(`Тоолол: ${count}`);
count++;
}
// Тоолол: 0
// Тоолол: 1
// Тоолол: 2
// Тоолол: 3
// Тоолол: 4
count++ бичихээ мартвал count хэзээ ч өөрчлөгдөхгүй тул давталт хэзээ ч зогсохгүй — хязгааргүй давталт (infinite loop) үүснэ. Хөтөч эсвэл Node.js хөлдөж болзошгүй тул болгоомжтой байгаарай.
do...while — нэг удаа заавал ажиллах
do...while нь дотор хэсгийг эхлээд нэг удаа ажиллуулаад дараа нь нөхцөл шалгадаг. Нөхцөл худал байсан ч хамгийн багадаа нэг удаа ажиллана.
let attempt = 0;
do {
console.log(`Оролдлого #${attempt + 1}`);
attempt++;
} while (attempt < 3);
// Оролдлого #1
// Оролдлого #2
// Оролдлого #3
Практик ашиглалт — хэрэглэгч зөв оролт өгөх хүртэл дахин асуух:
// Жишээ — бодит кодод prompt() ашиглана
let pin = "";
do {
pin = prompt("4 оронтой PIN оруулна уу:");
} while (pin.length !== 4);
console.log("PIN зөв оруулав.");
while vs for — хэзээ алийг ашиглах вэ?
// for — давтах тоог мэддэг үед
for (let i = 0; i < students.length; i++) {
console.log(students[i]);
}
// while — зогсоох нөхцлийг мэддэг, тоог мэдэхгүй үед
let xp = 0;
let level = 1;
while (xp < 1000) {
xp += Math.floor(Math.random() * 50) + 10;
console.log(`XP: ${xp}`);
}
console.log(`Эцсийн XP: ${xp}`);
break ба continue — while дотор
for давталттай адил while дотор ч break ба continue ажилладаг.
let number = 0;
while (true) {
// Хязгааргүй давталт — break-ээр зогсооно
number++;
if (number % 2 === 0) {
continue; // Сондгой тоог алгасна
}
console.log(number); // Зөвхөн сондгой тоо хэвлэнэ
if (number >= 9) {
break; // 9 дээр зогсоно
}
}
// 1, 3, 5, 7, 9
while (true) нь хязгааргүй давталт үүсгэнэ. Дотор нь заавал break байх ёстой — үгүй бол программ зогсохгүй.
Жишээ: Хичээлийн дэвшил тооцоолох
const targetXP = 500;
let currentXP = 0;
let lessonsCompleted = 0;
while (currentXP < targetXP) {
const earned = 10; // Хичээл бүр 10 XP
currentXP += earned;
lessonsCompleted++;
if (lessonsCompleted % 5 === 0) {
console.log(`🎯 ${lessonsCompleted} хичээл дууслаа — XP: ${currentXP}`);
}
}
console.log(
`Дууслаа! Нийт ${lessonsCompleted} хичээл, ${currentXP} XP цуглуулав.`,
);
// 🎯 5 хичээл дууслаа — XP: 50
// 🎯 10 хичээл дууслаа — XP: 100
// ...
// Дууслаа! Нийт 50 хичээл, 500 XP цуглуулав.
Дараагийн хичээлд:
Функцүүдийг судлана — давтагдах кодыг нэртэй блок болгон хэрхэн хуваарилж, дахин ашиглах боломжтой болгохыг үзнэ.