تخطَّ إلى المحتوى

العمليات الحسابية وعمليات المقارنة

الدرس 6 من 28 · JavaScript

البرامج تحسب طوال الوقت: مجموع سلة المشتريات، والوقت المتبقي في اللعبة، وعدد الإعجابات. وتقارن أيضاً: هل عمر المستخدم أكبر من 13؟ هل كلمة المرور طويلة بما يكفي؟ في هذا الدرس ستتعلم العمليات الحسابية وعمليات المقارنة، وستعرف لماذا يحب المبرمجون العلامة ===.

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

Section titled “العمليات الحسابية الأساسية”

تعرف أغلب هذه العمليات من الرياضيات، مع اختلاف بسيط في بعض الرموز:

العملية الرمز مثال
الجمع + 17 + 5
الطرح - 17 - 5
الضرب * 17 * 5
القسمة / 17 / 5
باقي القسمة % 17 % 5
الأُس (القوة) ** 17 ** 2
let a = 17;
let b = 5;
console.log(a + b);
console.log(a - b);
console.log(a * b);
console.log(a / b);
console.log(a % b);
console.log(a ** 2);
الناتج
22
12
85
3.4
2
289

العلامة % لا تحسب نسبة مئوية كما قد تظن، بل تعطيك الباقي بعد القسمة. تخيّل أن معك 17 قطعة حلوى وتريد توزيعها على 5 أصدقاء بالتساوي: كل واحد يأخذ 3 قطع، ويتبقى معك 2. هذا هو ناتج 17 % 5.

من أشهر استخداماتها معرفة إذا كان الرقم زوجياً أم فردياً. الرقم الزوجي باقي قسمته على 2 يساوي صفراً:

console.log(10 % 2, 7 % 2);
الناتج
0 1

مثل الرياضيات تماماً، الضرب والقسمة يُنفّذان قبل الجمع والطرح. والأقواس تغيّر هذا الترتيب:

console.log(2 + 3 * 4);
console.log((2 + 3) * 4);
الناتج
14
20

كثيراً ما تريد أن تغيّر قيمة متغير بالاعتماد على قيمته الحالية. بدلاً من كتابة likes = likes + 10 توجد اختصارات أقصر:

let likes = 0;
likes++; // زِد واحداً
likes++;
console.log(likes);
likes += 10; // زِد عشرة
console.log(likes);
let total = 100;
total -= 30; // اطرح 30
console.log(total);
total *= 2; // اضرب في 2
console.log(total);
الناتج
2
12
70
140

العلامة ++ تزيد واحداً، و -- تنقص واحداً. ستستخدمهما كثيراً في درس الحلقات.

العلامة + لها وظيفتان: تجمع الأرقام، وتلصق النصوص. فإذا كان أحد الطرفين نصاً، تختار JavaScript اللصق:

console.log("5" + 3);
console.log("5" - 3);
console.log("5" * "2");
الناتج
53
2
10

في السطر الأول لصقت 3 بجانب النص "5". أما الطرح والضرب فليس لهما معنى مع النصوص، فحوّلت JavaScript النصوص إلى أرقام تلقائياً. هذا التحويل التلقائي مصدر أخطاء كثيرة للمبتدئين، فاحرص على أن تكون أرقامك أرقاماً حقيقية لا نصوصاً.

المقارنة تسأل سؤالاً، والجواب دائماً قيمة منطقية: true أو false.

العملية الرمز المعنى
أكبر من > 7 > 3
أصغر من < 7 < 3
أكبر من أو يساوي >= 7 >= 7
أصغر من أو يساوي <= 7 <= 6
يساوي تماماً === 5 === 5
لا يساوي تماماً !== 5 !== 3
console.log(7 > 3, 7 < 3, 7 >= 7, 7 <= 6);
let password = "1234";
console.log(password.length >= 8);
الناتج
true false true false
false

في المثال الثاني سألنا: هل طول كلمة المرور 8 حروف أو أكثر؟ والإجابة false. (سنتعرف على .length في الدرس القادم).

في JavaScript علامتان للمساواة:

  • == (المساواة المتساهلة): تحوّل الطرفين إلى نفس النوع أولاً، ثم تقارن.
  • === (المساواة الصارمة): تقارن القيمة والنوع معاً، بدون أي تحويل.
console.log(5 == "5");
console.log(5 === "5");
console.log(5 != "5");
console.log(5 !== "5");
console.log(0 == false, 0 === false);
الناتج
true
false
false
true
true false

تخيّل حارس أمن على باب. الحارس المتساهل == يرى رقم 5 ونص "5" ويقول: «يشبهان بعضهما، تفضلا». أما الحارس الصارم === فيقول: «أحدكما رقم والآخر نص، أنتما مختلفان».

احسب سعر 3 قطع من منتج، ثم أضف رسوم التوصيل، وتحقق إن كان المبلغ أكبر من 100. غيّر السعر والكمية وشاهد النتيجة:

جرّب بنفسكJavaScript
أو اضغط Ctrl + Enter

الناتج

  • استخدام = للمقارنة: العلامة = للإسناد (وضع قيمة)، أما المقارنة فبـ ===. كتابة age = 18 تغيّر قيمة المتغير ولا تسأل عنها.
  • جمع أرقام مخزنة كنصوص: "10" + "5" تعطي "105" وليس 15. تأكد من نوع بياناتك.
  • نسيان ترتيب العمليات: 10 + 5 / 5 تساوي 11 وليس 3. استخدم الأقواس لتكتب ما تقصده بالضبط.

سؤال

ما ناتج 17 % 5؟

سؤال

ما ناتج 5 === '5'؟

  • العمليات الحسابية: + و - و * و / و % (الباقي) و ** (الأس).
  • الضرب والقسمة قبل الجمع والطرح، والأقواس تغيّر الترتيب.
  • اختصارات مثل ++ و += و -= توفر عليك الكتابة.
  • + مع النصوص تلصق ولا تجمع.
  • المقارنات تعطي true أو false، واستخدم دائماً === بدلاً من ==.