הצהרת switch
בג'אווה סקריפט משמשת לביצוע בלוק קוד יחיד כלשהו (מתוך רבים) בהתבסס על הערך של ביטוי מסויים. הצהרה זו מהווה אלטרנטיבה קריאה יותר למספר הצהרות if…else כאשר יש להשוות משתנה או ביטוי ספציפי כלשהו למספר ערכים שונים.
תחביר בסיסי – Syntax
התחביר הבסיסי של הצהרת switch
נראה כך:
switch (expression) {
case value1:
// קוד לביצוע אם expression === value1
break;
case value2:
// קוד לביצוע אם expression === value2
break;
// מקרים נוספים
default:
// קוד לביצוע אם אין התאמה
}
דוגמה לשימוש ב-switch…case
הנה דוגמה המתארת את השימוש בהצהרת switch
:
let day = new Date().getDay();
switch (day) {
case 0:
console.log('Sunday');
break;
case 1:
console.log('Monday');
break;
case 2:
console.log('Tuesday');
break;
case 3:
console.log('Wednesday');
break;
case 4:
console.log('Thursday');
break;
case 5:
console.log('Friday');
break;
case 6:
console.log('Saturday');
break;
default:
console.log('Invalid day');
}
בדוגמה זו הצהרת ה- switch
מעריכה את היום הנוכחי בשבוע (מ-0 עד 6) ומדפיסה את שם היום המתאים. אם ערך היום אינו תואם לאף מקרה (case), הבלוק default
יבוצע ונקבל Invalid Day.
שימוש ב-break
הצהרת ה break משמשת לסיים בלוק כלשהו. ללא הצהרת ה break
הביצוע ימשיך למקרה הבא, בין אם הוא תואם או לא. זה נקרא "התנהגות מעבר", או בלעז ״fall-through״:
let grade = 'B';
switch (grade) {
case 'A':
console.log('Excellent');
break;
case 'B':
console.log('Good');
break;
case 'C':
console.log('Fair');
break;
case 'D':
console.log('Poor');
break;
default:
console.log('Unknown grade');
}
בדוגמה זו, אם לא הייתה קיימת הצהרת ה- break
, אז לאחר הדפסת "Good" עבור ציון 'B', התוכנית הייתה ממשיכה לבצע את שאר הקוד עבור הציונים 'C', 'D' והצהרת ה- default
.
שימוש ב-switch עם מספר מקרים
לפעמים נרצה לבצע את אותו בלוק של קוד עבור מספר מקרים. במצבים כאלה, ניתן לקבץ מקרים יחד:
let fruit = 'banana';
switch (fruit) {
case 'apple':
case 'banana':
case 'pear':
console.log('This is a fruit.');
break;
default:
console.log('Unknown food item.');
}
בדוגמה זו, "This is a fruit." יודפס עבור 'apple', 'banana' או 'pear'.
השוואה בין הצהרת switch והצהרות if…else
הצהרת switch
יכולה לעתים קרובות להפוך את הקוד לקריא ותמציתי יותר בהשוואה למספר הצהרות if...else
, במיוחד כאשר יש מספר תנאים המעריכים את אותו משתנה.
שימוש בהצהרות if…else
let color = 'blue';
if (color === 'red') {
console.log('The color is red.');
} else if (color === 'blue') {
console.log('The color is blue.');
} else if (color === 'green') {
console.log('The color is green.');
} else if (color === 'yellow') {
console.log('The color is yellow.');
} else {
console.log('Unknown color.');
}
שימוש בהצהרת switch
let color = 'blue';
switch (color) {
case 'red':
console.log('The color is red.');
break;
case 'blue':
console.log('The color is blue.');
break;
case 'green':
console.log('The color is green.');
break;
case 'yellow':
console.log('The color is yellow.');
break;
default:
console.log('Unknown color.');
}
כפי שניתן לראות בדוגמאות, הצהרת switch
מספקת גישה מובנית וקריאה יותר בהשוואה להצהרות if...else
. היא מאפשרת הבנה ותחזוקה קלה יותר של הקוד כאשר מתמודדים עם תנאים מרובים המבוססים על אותו משתנה.
שיטות עבודה מומלצות
להלן כמה שיטות עבודה מומלצות לשימוש יעיל בהצהרת switch
:
- השתמש במצב ברירת מחדל: השתדלו תמיד לכלול מקרה
default
לטיפול בערכים בלתי צפויים. - שימוש ב-break: השתמשו בהצהרות
break
כדי למנוע התנהגות מעבר, אלא אם היא רצויה בכוונה תחילה. - קיבוץ לוגי: קבצו מקרים הקשורים יחד בכדי לפשט את הקוד ולהימנע מחזרות.
- שקלו את הקריאות: בעוד ש-switch יכולה לשפר את קריאות הקוד במצב של תנאים מרובים, הוא עלול להפוך למסורבל מדי במצב בו קיימים יותר מדי מקרים. שקלו מבנים חלופיים אם יש צורך.
סיכום
הצהרת switch
ב-JavaScript היא כלי עוצמתי לטיפול בתנאים מרובים בצורה נקייה ומאורגנת. על ידי הבנת התחביר שלה ושיטות עבודה מומלצות, תוכלו לכתוב קוד יעיל וקריא יותר.