المتغيرات وأنواع البيانات — JavaScript
ما هذا ولماذا؟
تخيل أن حاسوبك هو مكتب ضخم. عليه كتب مدرسية، دفاتر، أقلام، وبالطبع هاتفك الذكي. للعثور بسرعة على الشيء الذي تريده، تضع كل شيء في مكانه. في البرمجة، الأمر نفسه: عندما يعمل البرنامج، يحتاج إلى مكان لتخزين الأرقام والكلمات والبيانات الأخرى. لهذا توجد المتغيرات.
المتغير هو مثل صندوق عليه ملصق. على الملصق تكتب اسمًا (مثل "عمري")، وداخل الصندوق تضع قيمة (مثل 12). عندما تحتاج إلى هذه القيمة، تقول ببساطة: "أعطني ما هو موجود في الصندوق الذي اسمه عمري".
نوع البيانات هو قاعدة تحدد ما يمكن وضعه بالضبط في الصندوق. في صندوق واحد يمكنك وضع الأرقام فقط، وفي آخر النصوص فقط، وفي ثالث فقط العبارات الصحيحة أو الخاطئة (نعم/لا). إذا حاولت وضع نص في صندوق مخصص للأرقام، سيرتبك الحاسوب. لذلك من المهم معرفة أنواع البيانات الموجودة وكيفية استخدامها بشكل صحيح.
في JavaScript (JS)، تعمل أنواع البيانات تقريبًا كما في Python، ولكن هناك اختلافات مهمة. على سبيل المثال، في Python تكتب age = 12، وPython نفسه يخمن أن 12 هو رقم. في JavaScript الأمر نفسه، ولكن هناك تفاصيل دقيقة: JS أحيانًا يكون "مخمنًا" أكثر من اللازم وقد يفعل شيئًا لا تتوقعه. لذلك سوف نتعلم كيفية تحديد ما نريد بوضوح.
لماذا هذا ضروري؟ تخيل أنك تكتب برنامج آلة حاسبة. إذا خلطت بين الأنواع وجمعت الرقم 5 مع النص "5"، فلن تحصل على 10، بل على "55" (خمسة خموسات متتالية). الحاسوب سيفعل كما قلت له، وليس كما كنت تعتقد. لذلك، معرفة أنواع البيانات هي قوة خارقة تساعدك على تجنب الأخطاء الغبية.
أمثلة كود مع الشرح
دعنا ننتقل فورًا إلى التطبيق العملي. افتح أي محرر أكواد (مثل المدمج في المتصفح بالضغط على F12 والذهاب إلى علامة التبويب Console) أو استخدم محررًا عبر الإنترنت مثل CodePen أو JSFiddle. اكتب الكود وشاهد ما يحدث.
مثال 1: إنشاء متغيرات بأرقام
// إنشاء متغير باسم "myAge" ووضع الرقم 12 فيه
let myAge = 12;
// إنشاء متغير "pi" ووضع الرقم العشري 3.14 فيه
let pi = 3.14;
// إنشاء متغير "negativeNumber" ووضع الرقم السالب -5 فيه
let negativeNumber = -5;
// عرض القيم على الشاشة
console.log("عمري:", myAge); // سيطبع: عمري: 12
console.log("رقم باي:", pi); // سيطبع: رقم باي: 3.14
console.log("الرقم السالب:", negativeNumber); // سيطبع: الرقم السالب: -5
// الآن لنجمع رقمين
let sum = myAge + pi; // 12 + 3.14 = 15.14
console.log("مجموع العمر وباي:", sum); // سيطبع: مجموع العمر وباي: 15.14
// لاحظ: في JavaScript، الجزء العشري يفصل بنقطة، وليس بفاصلة!
// إذا كتبت 3,14 سيكون هذا خطأ، لأن الفاصلة لها معنى آخر.
الشرح: استخدمنا الكلمة المفتاحية let. تقول لـ JavaScript: "أنشئ صندوقًا جديدًا". بعد ذلك كتبنا اسم المتغير (myAge)، علامة المساواة (=) والقيمة (12). علامة المساواة هنا لا تعني "يساوي" بالمعنى الرياضي. إنها تعني "ضع في الصندوق". في Python كنت ستكتب نفس الشيء: my_age = 12. الفرق فقط أن في JavaScript من المعتاد استخدام camelCase (الكلمة الأولى بحرف صغير، وكل كلمة تالية بحرف كبير)، بينما في Python يستخدم snake_case (كلمات مفصولة بشرطة سفلية).
مثال 2: السلاسل النصية (String)
// السلسلة النصية هي أي نص. يجب وضعها بين علامتي اقتباس.
let myName = "آنا"; // علامات اقتباس مزدوجة
let myCity = 'موسكو'; // علامات اقتباس مفردة - تعمل أيضًا!
let myHobby = `الرسم`; // علامات الاقتباس الخلفية - طريقة حديثة
// عرض السلاسل النصية
console.log("اسمي هو:", myName); // سيطبع: اسمي هو: آنا
console.log("أعيش في مدينة:", myCity); // سيطبع: أعيش في مدينة: موسكو
console.log("هوايتي:", myHobby); // سيطبع: هوايتي: الرسم
// يمكن دمج السلاسل النصية (الربط)
let greeting = "مرحبًا, " + myName + "! أنت تعيش في " + myCity + ".";
console.log(greeting); // سيطبع: مرحبًا, آنا! أنت تعيش في موسكو.
// ويمكن أيضًا إدراج المتغيرات مباشرة في السلسلة النصية باستخدام علامات الاقتباس الخلفية
let greetingModern = `مرحبًا, ${myName}! أنت تعيش في ${myCity}.`;
console.log(greetingModern); // سيطبع نفس الشيء: مرحبًا, آنا! أنت تعيش في موسكو.
// لاحظ: ${...} هي صيغة خاصة تعمل فقط مع علامات الاقتباس الخلفية.
// هذا مريح جدًا، لا حاجة لوضع علامات الجمع باستمرار!
الشرح: في Python، يمكن أيضًا إنشاء سلاسل نصية بعلامات اقتباس مفردة أو مزدوجة. لكن في JavaScript هناك نوع إضافي - علامات الاقتباس الخلفية (`` ` ``). تسمح بإدراج المتغيرات مباشرة في النص باستخدام ${}. وهذا يسمى السلاسل النصية القالبية (template strings). في Python، يستخدم لذلك f-strings: f"مرحبًا, {my_name}!". المبدأ هو نفسه، فقط الصيغة مختلفة.
مثال 3: النوع المنطقي (Boolean) - صحيح أم خطأ
// النوع المنطقي يمكن أن يكون له قيمتان فقط: true (صحيح) أو false (خطأ)
let isStudent = true; // أنا طالب - هذا صحيح
let hasPets = false; // ليس لدي حيوانات أليفة - هذا خطأ
console.log("هل أنا طالب؟", isStudent); // سيطبع: هل أنا طالب؟ true
console.log("هل لدي حيوانات أليفة؟", hasPets); // سيطبع: هل لدي حيوانات أليفة؟ false
// القيم المنطقية غالبًا ما تنتج عن عمليات المقارنة
let myAge = 12;
let drivingAge = 18;
let canDrive = myAge >= drivingAge; // 12 >= 18? هذا خطأ!
console.log("هل يمكنني قيادة السيارة؟", canDrive); // سيطبع: هل يمكنني قيادة السيارة؟ false
// أمثلة أخرى على المقارنات:
let number1 = 10;
let number2 = 20;
console.log("هل 10 أكبر من 20؟", number1 > num