לולאת while בג'אווה סקריפט
כמו לולאת for, גם לולאת while מטרתה להפעיל קטע קוד במספר איטרציות, כלומר, במספר סבבים.
בעוד לולאת for כוללת 3 חלקים בהגדרתה: אתחול, תנאי עצירה וקידום, לולאת while כוללת תנאי עצירה בלבד.
לולאת while לדוגמה:
<script>
const names = ["Zamir", "Yariv", "Eli", "Sandra", "Sivan"];
while (names.length > 0) {
document.write(names.pop() + "<br />");
}
</script>
בדוגמה זו, הוצאנו בכל איטרציה של הלולאה איבר אחד מסוג המערך (המשמש כמחסנית) והדפסנו אותו על המסך.
בכל איטרציה, קטן המערך באיבר אחד עד שהערך של names.length השתווה ל-0 והלולאה הסתיימה.
לולאות while מתקדמות
כמו בלולאת for, גם בלולאת while ניתן לדלג לאיטרציה הבאה באמצעות הפקודה continue, או לעצור את ריצת הלולאה לגמרי באמצעות הפקודה break.
דוגמה לשימוש ב-continue וב-break בלולאת while:
<script>
const names = ["Zamir", "Yariv", "Eli", "Sandra", "Sivan"];
while (names.length > 0) {
var name = names.pop();
// skipping Yariv
if (name == "Sandra") {
continue;
}
document.write(name + "<br />");
// exit the loop after Sandra
if (name == "Yariv") {
break;
}
}
</script>
הפעם, בתחילת כל איטראציה, נוציא איבר מסוף המערך ונכניסו למשתנה name.
אם ערך המשתנה name הוא "Sandra" נדלג לאיטרציה הבאה (וערך זה לא יודפס על המסך).
אם ערך המשתנה name הוא "Yariv", נסיים עם הלולאה. הערך "Yariv" יודפס על המסך, כיוון שהבדיקה של name לערך זה נעשית לאחר פקודת ההדפסה ולא לפניה.
מתי נשתמש בלולאת for ומתי בלולאות while?
הסיבה לבחירת סוג הלולאה היא מטעמי נוחיות וקריאות טובה של הקוד בלבד.
ברוב המקרים, נעדיף לולאת for, אם מטרת הלולאה לבצע משהו שיש בו חשיבות לאינדקס המספרי. נניח כאשר רושמים על המסך את מספר האיטרציה, או ניגשים למערך לפי מיקום שתלוי באינדקס.
באופן פרקטי, ניתן כל לולאת for להפוך ללולאת while (את חלק האתחול ואת חלק הקידום נשים בתוך קטע הקוד בסוגריים המסולסלים) וניתן להפוך כל לולאת while ללולאת for (נשאיר את חלק האתחול וחלק הקידום בלולאה ריקים).
ניתן כמובן לקנן (להפעיל לולאות זו בתוך זו) לולאות while עם לולאות for וגם פה נעדיף להשתמש בלולאה מסוג for או מסוג while לפי נוחות הקריאה.