אופרטורים
אופרטורים הם סמלים שמבצעים פעולות על ערכים. JavaScript מכילה מגוון רחב של אופרטורים.
אופרטורים אריתמטיים (Arithmetic)
פעולות מתמטיות בסיסיות:
let a = 10;
let b = 3;
console.log(a + b); // 13 - חיבור
console.log(a - b); // 7 - חיסור
console.log(a * b); // 30 - כפל
console.log(a / b); // 3.333... - חילוק
console.log(a % b); // 1 - שארית (modulo)
console.log(a ** b); // 1000 - חזקה (10³)
חיבור עם מחרוזות
console.log("שלום" + " " + "עולם"); // "שלום עולם"
console.log("מספר: " + 5); // "מספר: 5"
console.log(5 + "5"); // "55" (מחרוזת!)
console.log(5 - "2"); // 3 (מספר!)
⚠️ זהירות: חיבור עם מחרוזת הופך הכל למחרוזת!
אופרטורי השמה (Assignment)
let x = 10; // השמה בסיסית
x += 5; // x = x + 5 → 15
x -= 3; // x = x - 3 → 12
x *= 2; // x = x * 2 → 24
x /= 4; // x = x / 4 → 6
x %= 4; // x = x % 4 → 2
x **= 3; // x = x ** 3 → 8
טבלת אופרטורי השמה
| אופרטור | דוגמה | שקול ל |
|---|---|---|
= |
x = 5 |
x = 5 |
+= |
x += 5 |
x = x + 5 |
-= |
x -= 5 |
x = x - 5 |
*= |
x *= 5 |
x = x * 5 |
/= |
x /= 5 |
x = x / 5 |
%= |
x %= 5 |
x = x % 5 |
**= |
x **= 5 |
x = x ** 5 |
אופרטורי הגדלה והקטנה (Increment/Decrement)
let count = 5;
count++; // count = count + 1 → 6
count--; // count = count - 1 → 5
// ההבדל בין prefix ל-postfix
let a = 5;
console.log(a++); // 5 (מחזיר ואז מגדיל)
console.log(a); // 6
let b = 5;
console.log(++b); // 6 (מגדיל ואז מחזיר)
console.log(b); // 6
אופרטורי השוואה (Comparison)
מחזירים true או false:
let a = 5;
let b = "5";
// השוואת ערך בלבד (עם המרה)
console.log(a == b); // true (5 == "5")
console.log(a != b); // false
// השוואה מדויקת (ערך וסוג)
console.log(a === b); // false (מספר ≠ מחרוזת)
console.log(a !== b); // true
// השוואות נוספות
console.log(5 > 3); // true - גדול מ
console.log(5 < 3); // false - קטן מ
console.log(5 >= 5); // true - גדול או שווה
console.log(5 <= 4); // false - קטן או שווה
== לעומת === (חשוב!)
// == - השוואה רופפת (עם המרת סוג)
console.log(5 == "5"); // true
console.log(0 == false); // true
console.log(null == undefined); // true
// === - השוואה מדויקת (מומלץ!)
console.log(5 === "5"); // false
console.log(0 === false); // false
console.log(null === undefined); // false
💡 המלצה: תמיד השתמשו ב-
===ו-!==למניעת באגים.
אופרטורים לוגיים (Logical)
&& - וגם (AND)
// מחזיר true רק אם שניהם true
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
// דוגמה מעשית
let age = 25;
let hasLicense = true;
let canDrive = age >= 18 && hasLicense; // true
|| - או (OR)
// מחזיר true אם לפחות אחד true
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
// דוגמה מעשית
let isWeekend = true;
let isHoliday = false;
let dayOff = isWeekend || isHoliday; // true
! - לא (NOT)
// הופך את הערך
console.log(!true); // false
console.log(!false); // true
console.log(!0); // true
console.log(!""); // true
console.log(!"שלום"); // false
// שימוש כפול להמרה לבוליאני
console.log(!!"שלום"); // true
console.log(!!0); // false
?? - Nullish Coalescing
// מחזיר את הערך הימני רק אם השמאלי null או undefined
let name = null;
console.log(name ?? "אנונימי"); // "אנונימי"
let age = 0;
console.log(age ?? 18); // 0 (לא null/undefined)
console.log(age || 18); // 18 (0 הוא falsy!)
אופרטור טרנרי (Ternary)
קיצור ל-if/else בשורה אחת:
// תחביר: condition ? valueIfTrue : valueIfFalse
let age = 20;
let status = age >= 18 ? "בגיר" : "קטין";
console.log(status); // "בגיר"
// דוגמאות נוספות
let score = 75;
let grade = score >= 90 ? "מצוין" :
score >= 70 ? "טוב" :
score >= 55 ? "מספיק" : "נכשל";
console.log(grade); // "טוב"
// שימוש בפונקציות
function greet(name) {
return name ? `שלום ${name}` : "שלום אורח";
}
אופרטורי מחרוזת
// חיבור מחרוזות
let first = "שלום";
let second = "עולם";
let full = first + " " + second; // "שלום עולם"
// קיצור השמה
let text = "שלום";
text += " עולם"; // "שלום עולם"
// template literals
let name = "דן";
let greeting = `שלום ${name}!`; // "שלום דן!"
אופרטור typeof
בודק את סוג הערך:
console.log(typeof 42); // "number"
console.log(typeof "שלום"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (באג!)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
סדר קדימויות (Operator Precedence)
כמו במתמטיקה, יש סדר לביצוע פעולות:
// כפל לפני חיבור
console.log(2 + 3 * 4); // 14 (לא 20)
console.log((2 + 3) * 4); // 20
// סדר הקדימויות (מהגבוה לנמוך):
// 1. () - סוגריים
// 2. ** - חזקה
// 3. *, /, % - כפל, חילוק, שארית
// 4. +, - - חיבור, חיסור
// 5. <, >, <=, >= - השוואות
// 6. ==, ===, !=, !== - שוויון
// 7. && - וגם
// 8. || - או
// 9. = - השמה
💡 טיפ: כשיש ספק, השתמשו בסוגריים לבהירות.
דוגמאות מעשיות
חישוב מחיר עם הנחה
let price = 100;
let discount = 20; // אחוז
let finalPrice = price - (price * discount / 100);
console.log(finalPrice); // 80
בדיקת גיל לאתר
let age = 16;
let hasParentPermission = true;
let canEnter = age >= 18 || (age >= 13 && hasParentPermission);
console.log(canEnter); // true
חישוב ממוצע
let scores = [85, 90, 78, 92, 88];
let sum = scores[0] + scores[1] + scores[2] + scores[3] + scores[4];
let average = sum / scores.length;
console.log(average); // 86.6
סיכום
| סוג | אופרטורים |
|---|---|
| אריתמטי | + - * / % ** |
| השמה | = += -= *= /= %= |
| השוואה | == === != !== > < >= <= |
| לוגי | && \|\| ! ?? |
| טרנרי | ? : |
| סוג | typeof |
| הגדלה/הקטנה | ++ -- |
כללי אצבע:
- השתמשו ב-=== במקום ==
- השתמשו ב-?? לבדיקת null/undefined
- השתמשו בסוגריים לבהירות
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה ההבדל בין
==ל-===?הצגת התשובה
תשובה ג. '5' == 5 הוא true, אבל '5' === 5 הוא false. משתמשים תמיד ב-===.
-
מה מחזיר
null ?? 'ברירת מחדל'?הצגת התשובה
תשובה ג. ?? מחזיר את הצד הימני רק כשהשמאלי null או undefined.
-
מה ההבדל בין
0 || 5ל-0 ?? 5?הצגת התשובה
תשובה ד. || מתעלם מכל ערך falsy, ?? רק מ-null ו-undefined. לכן ?? בטוח יותר עבור 0 ומחרוזת ריקה.