أنواع البيانات في JavaScript
في الدرس السابق وضعنا في المتغيرات نصوصاً وأرقاماً وكلمة true. هذه القيم ليست من نوع واحد، وJavaScript تتعامل مع كل نوع بطريقة مختلفة. في هذا الدرس ستتعرف على أنواع البيانات (Data Types) الأساسية، وكيف تعرف نوع أي قيمة بنفسك.
لماذا نهتم بنوع البيانات؟
Section titled “لماذا نهتم بنوع البيانات؟”تخيّل مطبخاً فيه سكر وملح ودقيق. كلها مساحيق بيضاء تبدو متشابهة، لكن كل واحد منها يتصرف بشكل مختلف في الطبخ. إذا خلطت السكر مكان الملح، فلن تحصل على النتيجة التي تريدها!
كذلك في البرمجة: الرقم 15 والنص "15" يبدوان متشابهين، لكن JavaScript تعاملهما بشكل مختلف تماماً:
console.log("15" + 1, 15 + 1);151 16مع النص، قامت JavaScript بـ لصق الرقم بجانبه فأصبح 151. ومع الرقم، قامت بـ الجمع فأصبح 16. لهذا يجب أن تعرف دائماً نوع البيانات التي تتعامل معها.
النصوص (String)
Section titled “النصوص (String)”النص هو أي مجموعة من الحروف أو الكلمات أو الرموز. يُكتب بين علامات تنصيص، ولك أن تختار واحدة من ثلاث:
let city = "القاهرة"; // علامتا تنصيص مزدوجتانlet country = 'مصر'; // علامتا تنصيص مفردتانlet message = `أهلاً بك`; // علامة الـ backtickالأنواع الثلاثة تصنع نصاً، والمهم أن تبدأ النص وتنهيه بنفس العلامة. أما علامة الـ backtick فلها قدرات خاصة سنتعرف عليها في درس النصوص.
الأرقام (Number)
Section titled “الأرقام (Number)”في JavaScript نوع واحد لكل الأرقام: الصحيحة مثل 15، والعشرية مثل 9.99، والسالبة مثل -3. وهذا يختلف عن لغات أخرى تفصل بين هذه الأنواع.
let age = 15;let price = 9.99;let temperature = -3;القيمة الغريبة NaN
Section titled “القيمة الغريبة NaN”ماذا يحدث إذا حاولت ضرب كلمة في رقم؟
console.log("تفاحة" * 2);console.log(typeof NaN);NaNnumberNaN اختصار لعبارة «Not a Number»، أي «ليس رقماً». تظهر عندما تطلب عملية حسابية لا معنى لها. والطريف أن نوعها نفسه هو number! اعتبرها «رقماً معطوباً» نتج عن عملية خاطئة.
القيم المنطقية (Boolean)
Section titled “القيم المنطقية (Boolean)”هذا النوع له قيمتان فقط: true (صحيح) و false (خطأ). يشبه مفتاح الإضاءة: إما مضاء وإما مطفأ، ولا يوجد حل ثالث.
let isOnline = true;let hasPaid = false;console.log(10 > 5);trueالقيم المنطقية هي أساس اتخاذ القرارات في البرامج: هل كلمة المرور صحيحة؟ هل اللاعب ما زال حياً؟ هل المستخدم سجّل دخوله؟ ستستخدمها كثيراً في درس الشروط.
undefined و null: الفراغ بنوعيه
Section titled “undefined و null: الفراغ بنوعيه”في JavaScript طريقتان للتعبير عن «لا شيء»، والفرق بينهما مهم:
undefinedتعني أن المتغير لم تُعطه قيمة بعد. مثل صندوق اشتريته ولم تضع فيه شيئاً.nullتعني أنك قررت عمداً أن الصندوق فارغ. مثل صندوق أفرغته بيدك وكتبت عليه «فارغ».
let phone; // لم نعطه قيمةlet car = null; // فارغ عن قصدconsole.log(phone);undefinedالقاعدة البسيطة: undefined تضعها JavaScript تلقائياً، و null تضعها أنت عندما تريد أن تقول «لا توجد قيمة هنا».
اكتشف النوع بنفسك: typeof
Section titled “اكتشف النوع بنفسك: typeof”الأمر typeof يخبرك بنوع أي قيمة. ضعه قبل القيمة أو قبل اسم المتغير:
let name = "ليلى";let age = 15;let price = 9.99;let isOnline = true;let car = null;let phone;
console.log(typeof name);console.log(typeof age);console.log(typeof price);console.log(typeof isOnline);console.log(typeof car);console.log(typeof phone);stringnumbernumberbooleanobjectundefinedلاحظ أن typeof null أعطت object وليس null. هذا خطأ قديم في اللغة منذ نشأتها، ولم يُصلَّح حتى لا تتعطل ملايين المواقع التي تعتمد عليه. احفظ هذه المعلومة، فهي سؤال شائع في المقابلات!
جرّب بنفسك
Section titled “جرّب بنفسك”غيّر قيمة المتغير mystery عدة مرات، وفي كل مرة توقّع النوع قبل أن تضغط «شغّل». جرّب: "42" ثم 42 ثم false ثم null.
الناتج
أخطاء شائعة
Section titled “أخطاء شائعة”- وضع الأرقام بين علامات تنصيص:
let age = "15";يجعلها نصاً، فتحصل على"151"بدلاً من16عند الجمع. - كتابة True بحرف كبير: القيم المنطقية تُكتب بحروف صغيرة دائماً:
trueوfalse. - الخلط بين null و undefined: إذا أردت أن تفرّغ متغيراً عمداً، اكتب
nullولا تكتبundefinedبنفسك.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما نوع القيمة '2010' (بين علامتي تنصيص)؟
أي قيمة بين علامات تنصيص تصبح نصاً (string) حتى لو كانت أرقاماً.
سؤال
ما ناتج typeof null؟
هذا خطأ تاريخي في JavaScript: typeof null تعطي object رغم أن null ليست كائناً.
الخلاصة
Section titled “الخلاصة”- النص (string) بين علامات تنصيص، والرقم (number) بدونها، ونوع واحد يشمل الصحيح والعشري.
- القيمة المنطقية (boolean) إما
trueأوfalse. undefinedتعني «لم تُعطَ قيمة بعد»، وnullتعني «فارغ عن قصد».NaNتظهر عند عملية حسابية بلا معنى.- الأمر
typeofيكشف نوع أي قيمة، مع الانتباه إلى أنtypeof nullتعطيobject.