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 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);