חיפוש ]

לולאת do-while ב- JavaScript: מדריך עם דוגמאות קוד

לולאות מאפשרות להריץ קטע קוד מספר פעמים עד שתנאי כלשהו מתקיים. הן עוזרות להריץ פקודות בצורה יעילה ומונעות את הצורך לחזור על אותו קוד שוב ושוב. בפוסט הזה נתמקד בלולאה do-while ב-JavaScript, נסביר את התחביר שלה ונציג דוגמאות מעשיות.

לולאת do-while שימושית במיוחד כשרוצים לוודא שקטע קוד ירוץ לפחות פעם אחת, ללא תלות בתנאי.

הלולאה do-while ב-JavaScript

בניגוד ללולאות for או while, לולאת do-while מריצה תמיד את קטע הקוד לפחות פעם אחת לפני בדיקת התנאי. הסיבה לכך היא שהתנאי נבדק רק לאחר שהלולאה כבר רצה. הנה התחביר הבסיסי של לולאה זו ב-JavaScript:

do {
  statement;
} while (condition);

הנה פירוט של מה שקורה מאחורי הקלעים:

  1. הפקודה (גוף הלולאה) מתבצעת.
  2. לאחר ביצוע הפקודה, התנאי נבדק. אם התנאי מתקיים (true), הלולאה ממשיכה והפקודה רצה שוב. אם התנאי אינו מתקיים (false), הלולאה מסתיימת.

דוגמה א: הצגת הודעה 5 פעמים

בדוגמה הזו נשתמש בלולאת do-while כדי להציג הודעה 5 פעמים:

// תוכנית להצגת הודעה 5 פעמים
let i = 1;
const n = 5;

do {
    console.log('I love JavaScript.');
    i++;
} while (i <= n);

פלט:

I love JavaScript.
I love JavaScript.
I love JavaScript.
I love JavaScript.
I love JavaScript.

במקרה הזה, הלולאה רצה 5 פעמים מכיוון שהערך של i גדל לאחר כל איטרציה ונבדק כנגד הערך של n.

דוגמה ב: הצגת מספרים מ-1 עד 5

כעת נשתמש בלולאת do-while כדי להדפיס מספרים מ-1 עד 5:

// תוכנית להצגת מספרים מ-1 עד 5
let i = 1;
const n = 5;

do {
    console.log(i);
    i++;
} while (i <= n);

פלט:

1
2
3
4
5

בדוגמה הזו, הלולאה ממשיכה לרוץ כל עוד i <= 5. אפילו אם הערך ההתחלתי של i היה גדול מ-5, הלולאה הייתה רצה לפחות פעם אחת לפני בדיקת התנאי.

הבדלים מרכזיים בין לולאות while ו-do-while

ההבדל המרכזי בין לולאות while ולולאות do-while טמון בנקודה בה מתבצעת בדיקת התנאי:

  • לולאת while: התנאי נבדק בתחילת הלולאה, לפני שגוף הלולאה רץ. אם התנאי אינו מתקיים (false) מלכתחילה, גוף הלולאה לא ירוץ.
  • לולאת do-while: גוף הלולאה מתבצע קודם, ולאחר מכן נבדק התנאי. עקרון זה מבטיח שגוף הלולאה ירוץ לפחות פעם אחת, אפילו אם התנאי אינו מתקיים בהתחלה (false).

הנה דוגמה המציגה את ההבדל בין שתי הלולאות:

שימוש בלולאת while:

let i = 6;
const n = 5;

while (i <= n) {
    console.log(i);
    i++;
}

פלט: (שום דבר לא יודפס מכיוון שהתנאי הוא false בהתחלה.)

שימוש בלולאת do-while:

let i = 6;
const n = 5;

do {
    console.log(i);
    i++;
} while (i <= n);

פלט:

6

במקרה הזה, למרות שהתנאי הוא false בהתחלה, הלולאה מבצעת את הקוד בגוף הלולאה לפחות פעם אחת, ולכן המספר 6 מודפס.

דוגמה ג: חישוב סכום של מספרים טבעיים מ-1 עד 100

בואו נשתמש בלולאת do-while כדי לחשב את סכום המספרים הטבעיים מ-1 עד 100:

// תוכנית לחישוב הסכום של מספרים טבעיים
let sum = 0;
let i = 1;
const n = 100;

do {
    sum += i;
    i++;
} while (i <= n);

console.log('Sum:', sum);

פלט:

Sum: 5050

לולאה זו מוסיפה את הערך של i למשתנה sum וממשיכה בכך עד ש-i מגיע ל-101, אז התנאי נכשל והלולאה מפסיקה.

דוגמה ד: שימוש ב-do-while כדי לאמת קלט מהמשתמש

ניתן להשתמש בלולאת do-while במקרים שבהם יש לאמת קלט מהמשתמש ולוודא שהלולאה רצה לפחות פעם אחת לפני ביצוע האימות:

let number;

do {
    number = parseInt(prompt("Enter a number greater than 10:"), 10);
} while (isNaN(number) || number <= 10);

console.log("You entered: " + number);

בדוגמה זו, הלולאה מבקשת מהמשתמש קלט וממשיכה לבקש מספר עד שמוזן ערך תקין הגדול מ-10. שימו לב לשימוש ב-parseInt() כדי להמיר את המחרוזת שמוחזרת מ-prompt() למספר, ובדיקת isNaN() כדי לטפל בקלט לא-מספרי.

שימוש ב-break ו-continue בלולאות do-while

ניתן להשתמש ב-break כדי לצאת מלולאת do-while לפני הזמן, וב-continue כדי לדלג על שאר האיטרציה הנוכחית ולקפוץ ישירות לבדיקת התנאי.

יציאה מוקדמת עם break

let i = 1;

do {
    if (i === 3) {
        console.log('Stopping at 3');
        break;
    }
    console.log(i);
    i++;
} while (i <= 5);

פלט:

1
2
Stopping at 3

הלולאה עוצרת ברגע ש-i שווה ל-3, למרות שהתנאי היה מאפשר לה להמשיך עד 5. למידע נוסף על break, עיינו בפוסט שלנו על הצהרת break ב-JavaScript.

דילוג על איטרציה עם continue

let i = 0;

do {
    i++;
    if (i === 3) {
        continue;
    }
    console.log(i);
} while (i < 5);

פלט:

1
2
4
5

המספר 3 מדולג כי continue קופץ ישירות לבדיקת התנאי, ומדלג על קריאת ה-console.log() באיטרציה הזו.

טעויות נפוצות שכדאי להימנע מהן

כשעובדים עם לולאות do-while, שימו לב לטעויות הנפוצות הבאות:

1. שכחה לעדכן את משתנה הלולאה
אם שוכחים לקדם או לעדכן את המשתנה שמשמש בתנאי, הלולאה תרוץ לנצח:

// לולאה אינסופית - חסר i++
let i = 1;

do {
    console.log(i);
    // !i++ חסר
} while (i <= 5);

תמיד וודאו שמשתנה הלולאה מתעדכן בתוך גוף הלולאה. לולאה אינסופית עלולה להקפיא את לשונית הדפדפן או לקרוס את האפליקציה.

2. חוסר נקודה-פסיק אחרי תנאי ה-while
בניגוד ללולאת while, לולאת do-while דורשת נקודה-פסיק אחרי הסוגריים הסוגרים:

// נכון
do { ... } while (condition);

// עלול לגרום לבעיות
do { ... } while (condition)

למרות שהכנסת נקודה-פסיק אוטומטית (ASI) של JavaScript בדרך כלל מטפלת בזה, מומלץ תמיד לכלול את הנקודה-פסיק כדי להימנע מהתנהגות לא צפויה.

3. בלבול בין הלולאה ללולאת while
זכרו שלולאת do-while תמיד רצה לפחות פעם אחת. אם אתם צריכים לבדוק את התנאי לפני האיטרציה הראשונה, השתמשו בלולאת while במקום.

שאלות נפוצות

מתי כדאי להשתמש בלולאת do-while במקום while?
השתמשו בלולאת do-while כשאתם צריכים שהקוד ירוץ לפחות פעם אחת לפני בדיקת התנאי. תרחישים נפוצים כוללים אימות קלט מהמשתמש, תפריטים מונחי-בחירה ולוגיקת retry שבה רוצים לנסות פעולה קודם ואז לבדוק אם היא הצליחה.
אפשר להשתמש ב-break ו-continue בתוך לולאת do-while?
כן. הצהרת break יוצאת מהלולאה לגמרי, ו-continue מדלגת על שאר האיטרציה הנוכחית וקופצת ישירות לבדיקת התנאי. שניהם עובדים באותו אופן כמו בלולאות for ו-while.
מה קורה אם התנאי תמיד true בלולאת do-while?
אם התנאי לעולם לא הופך ל-false, הלולאה תרוץ ללא הגבלה ותיצור לולאה אינסופית. זה עלול להקפיא את לשונית הדפדפן או לקרוס את האפליקציה. תמיד וודאו שמשתנה הלולאה מתעדכן בתוך גוף הלולאה כדי שהתנאי יתקיים בסופו של דבר, או השתמשו ב-break כדי לצאת מהלולאה בתנאים מסוימים.
האם הנקודה-פסיק אחרי while(condition); הכרחית?
טכנית, הכנסת נקודה-פסיק אוטומטית (ASI) של JavaScript בדרך כלל תוסיף אותה עבורכם. עם זאת, מומלץ מאוד לכלול תמיד את הנקודה-פסיק אחרי while(condition); בלולאת do-while. השמטתה עלולה להוביל להתנהגות לא צפויה במקרי קצה והופכת את הקוד לפחות קריא.
אפשר לקנן לולאת do-while בתוך לולאה אחרת?
כן, אפשר לקנן לולאות do-while בתוך לולאות אחרות (כולל for, while ולולאות do-while נוספות). כל לולאה שומרת על משתנה לולאה ותנאי משלה. רק שימו לב עם קינון עמוק, כי הוא עלול להשפיע על הביצועים ולהקשות על קריאות הקוד.

סיכום

לולאת do-while ב-JavaScript היא מבנה שימושי המבטיח ביצוע של גוף הלולאה לפחות פעם אחת, דבר ההופך אותה שימושית במיוחד למשימות כמו אימות קלט, לוגיקת retry ותפריטים מונחי-בחירה שבהם יש לבדוק את התנאי לאחר ביצוע הקוד.

ההבנה של לולאת do-while, יחד עם סוגים אחרים של לולאות, היא חיונית לתכנות יעיל ב-JavaScript. אם אתם רוצים לחקור עוד על לולאות, עיינו בפוסט שלנו על לולאת for ב-JavaScript. ייתכן שתמצאו גם את המדריך למערכים ב-JavaScript שימושי, כי מערכים הם אחד ממבני הנתונים הנפוצים ביותר שתעברו עליהם עם לולאות.

דיון ותגובות
0 תגובות  ]

השאירו תגובה

הוסיפו קוד באמצעות הכפתורים מטה. למשל, בכדי להוסיף PHP לחצו על הכפתור PHP והוסיפו את הקוד בתוך השורטקוד. מצאתם שגיאה בפוסט? עדכנו אותנו...

Savvy WordPress Development official logo