משפטי תנאי if - else בג'אווה סקריפט
לעיתים, נרצה שהקוד יבצע משהו אחד במקרה מסויים, ומשהו אחר במקרה אחר. לשם כך נועדו משפטי תנאי.
משפט תנאי כולל את התנאי עצמו (condition) ובלוק של פקודות לביצוע אם התנאי מתקיים. הוא יכול גם לכלול בלוק נוסף של פקודות לביצוע במקרה שהתנאי אינו מתקיים.
דוגמאות למשפטי תנאי:
<script>
var a = 9;
var b = 8;
if (a > b) {
document.write("a > b");
} else {
document.write("a <= b");
}
document.write("<br />");
var c = a*b;
if (c == 72) {
document.write("c equals 72");
}
</script>
משפט התנאי הראשון כולל את התנאי a > b ו-2 קטעי קוד: הראשון ירוץ אם התנאי מתקיים, והשני במקרה שהתנאי אינו מתקיים.
כשקוראים את הקוד, נקרא: אם condition אז ... אחרת ... ובמקרה שלנו: אם a > b אז הדפס על המסך את המחרוזת "a > b", אחרת, הדפס על המסך את המחרוזת "a <= b" (כלומר, a קטן או שווה ל-b).
משפט התנאי השני אינו כולל בלוק else, ולכן, אם התנאי מתקיים יבוצע קטע הקוד, אחרת לא יבוצע דבר.
משפטי תנאי מקוצרים
על מנת לקצר את הקוד ולשפר את הקריאות, ניתן ליצור משפטי תנאי מקוצרים במבנה condition ? statement1 : statement2.
המבנה הזה למעשה מחזיר ערך בהתאם לתנאי. אם התנאי (condition) מתקיים, הוא מחזיר את הערך של statement1, אחרת הוא מחזיר את הערך של statement2.
דוגמאות למשפטי תנאי מקוצרים:
<script>
var a = 9;
var b = 8;
var max = a > b ? a : b;
var min = a < b ? a : b;
var diff = a == b ? 0 : (a > b ? -1 : 1);
</script>
בהשמה הראשונה למשתנה max, יבדק התנאי a > b. אם הוא מתקיים, max יקבל את הערך של a, אחרת הוא יקבל את הערך של b. למעשה, זהו ביטוי שמוצא את המקסימום בין 2 המספרים.
באופן דומה, בהשמה השניה, יקבל המשתנה min את ערך המינימום שבין שני המספרים.
ההשמה השלישית מציגה משפט תנאי שהחלק השני שלו (statement 2) הוא בעצמו משפט תנאי. אם a == b (כלומר, אם הערכים a, b שווים), diff יקבל את הערך 0. אחרת, נבדוק את הביטוי a > b ואם הוא מתקיים diff יקבל 1- ואחרת הוא יקבל 1. במילים אחרות: diff יהיה שווה 1- אם a>b, שווה 0 אם a=b או שווה 1 אם a<b.