Kodax

العمليات والمقارنات — JavaScript الأساسيات

العمليات والمقارنات

العمليات الحسابية

let a = 10, 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 - باقي القسمة
console.log(a ** b);  // 1000 - الأس (10³)

عمليات الإسناد

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

الزيادة والنقصان

let i = 5;

// Prefix (قبل)
console.log(++i); // 6 - يزيد أولاً ثم يُرجع
console.log(--i); // 5 - ينقص أولاً ثم يُرجع

// Postfix (بعد)
console.log(i++); // 5 - يُرجع ثم يزيد
console.log(i);   // 6

عمليات المقارنة

let x = 5;

// المقارنة البسيطة (تتجاهل النوع)
console.log(5 == "5");   // true
console.log(5 == 5);     // true

// المقارنة الصارمة (تفحص النوع) ⭐ استخدم هذه
console.log(5 === "5");  // false
console.log(5 === 5);    // true

// عدم المساواة
console.log(5 != "5");   // false
console.log(5 !== "5");  // true

// المقارنات الأخرى
console.log(5 > 3);      // true
console.log(5 < 3);      // false
console.log(5 >= 5);     // true
console.log(5 <= 4);     // false

العمليات المنطقية

// AND - && (كلاهما صحيح)
console.log(true && true);   // true
console.log(true && false);  // false
console.log(5 > 3 && 10 > 5); // true

// OR - || (أحدهما صحيح)
console.log(true || false);  // true
console.log(false || false); // false
console.log(5 > 10 || 3 > 1); // true

// NOT - ! (عكس القيمة)
console.log(!true);   // false
console.log(!false);  // true
console.log(!!1);     // true (تحويل لـ boolean)

Nullish Coalescing (??) - ES2020

let name = null;
let defaultName = "زائر";

// الطريقة القديمة
let result1 = name || defaultName;

// الطريقة الجديدة (أفضل)
let result2 = name ?? defaultName;

// الفرق:
console.log(0 || "default");  // "default" (0 = falsy)
console.log(0 ?? "default");  // 0 (فقط null/undefined)
console.log("" || "default"); // "default"
console.log("" ?? "default"); // ""

Optional Chaining (?.) - ES2020

const user = {
  name: "أحمد",
  address: {
    city: "بغداد"
  }
};

// الطريقة القديمة
let city1 = user && user.address && user.address.city;

// الطريقة الجديدة
let city2 = user?.address?.city; // "بغداد"
let country = user?.address?.country; // undefined (لا خطأ)

// مع الدوال
user.greet?.(); // لا يُنفذ إذا greet غير موجودة

Ternary Operator (العامل الثلاثي)

let age = 20;

// بدلاً من if-else
let status = age >= 18 ? "بالغ" : "قاصر";
console.log(status); // "بالغ"

// يمكن تداخلها (لكن تجنب ذلك للقراءة)
let grade = 85;
let result = grade >= 90 ? "ممتاز" 
           : grade >= 80 ? "جيد جداً"
           : grade >= 70 ? "جيد"
           : "مقبول";
// تجربة العمليات
let a = 10, b = 3;

console.log("الجمع:", a + b);
console.log("القسمة:", a / b);
console.log("باقي القسمة:", a % b);

// المقارنات
console.log("5 == '5':", 5 == "5");   // true
console.log("5 === '5':", 5 === "5"); // false

// العامل الثلاثي
let age = 20;
let status = age >= 18 ? "بالغ" : "قاصر";
console.log(status);
اختبر فهمك