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

أنواع البيانات في JavaScript

الدرس 5 من 28 · JavaScript

في الدرس السابق وضعنا في المتغيرات نصوصاً وأرقاماً وكلمة true. هذه القيم ليست من نوع واحد، وJavaScript تتعامل مع كل نوع بطريقة مختلفة. في هذا الدرس ستتعرف على أنواع البيانات (Data Types) الأساسية، وكيف تعرف نوع أي قيمة بنفسك.

لماذا نهتم بنوع البيانات؟

Section titled “لماذا نهتم بنوع البيانات؟”

تخيّل مطبخاً فيه سكر وملح ودقيق. كلها مساحيق بيضاء تبدو متشابهة، لكن كل واحد منها يتصرف بشكل مختلف في الطبخ. إذا خلطت السكر مكان الملح، فلن تحصل على النتيجة التي تريدها!

كذلك في البرمجة: الرقم 15 والنص "15" يبدوان متشابهين، لكن JavaScript تعاملهما بشكل مختلف تماماً:

console.log("15" + 1, 15 + 1);
الناتج
151 16

مع النص، قامت JavaScript بـ لصق الرقم بجانبه فأصبح 151. ومع الرقم، قامت بـ الجمع فأصبح 16. لهذا يجب أن تعرف دائماً نوع البيانات التي تتعامل معها.

النص هو أي مجموعة من الحروف أو الكلمات أو الرموز. يُكتب بين علامات تنصيص، ولك أن تختار واحدة من ثلاث:

let city = "القاهرة"; // علامتا تنصيص مزدوجتان
let country = 'مصر'; // علامتا تنصيص مفردتان
let message = `أهلاً بك`; // علامة الـ backtick

الأنواع الثلاثة تصنع نصاً، والمهم أن تبدأ النص وتنهيه بنفس العلامة. أما علامة الـ backtick فلها قدرات خاصة سنتعرف عليها في درس النصوص.

في JavaScript نوع واحد لكل الأرقام: الصحيحة مثل 15، والعشرية مثل 9.99، والسالبة مثل -3. وهذا يختلف عن لغات أخرى تفصل بين هذه الأنواع.

let age = 15;
let price = 9.99;
let temperature = -3;

ماذا يحدث إذا حاولت ضرب كلمة في رقم؟

console.log("تفاحة" * 2);
console.log(typeof NaN);
الناتج
NaN
number

NaN اختصار لعبارة «Not a Number»، أي «ليس رقماً». تظهر عندما تطلب عملية حسابية لا معنى لها. والطريف أن نوعها نفسه هو number! اعتبرها «رقماً معطوباً» نتج عن عملية خاطئة.

هذا النوع له قيمتان فقط: 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 يخبرك بنوع أي قيمة. ضعه قبل القيمة أو قبل اسم المتغير:

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);
الناتج
string
number
number
boolean
object
undefined

لاحظ أن typeof null أعطت object وليس null. هذا خطأ قديم في اللغة منذ نشأتها، ولم يُصلَّح حتى لا تتعطل ملايين المواقع التي تعتمد عليه. احفظ هذه المعلومة، فهي سؤال شائع في المقابلات!

غيّر قيمة المتغير mystery عدة مرات، وفي كل مرة توقّع النوع قبل أن تضغط «شغّل». جرّب: "42" ثم 42 ثم false ثم null.

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

الناتج

  • وضع الأرقام بين علامات تنصيص: let age = "15"; يجعلها نصاً، فتحصل على "151" بدلاً من 16 عند الجمع.
  • كتابة True بحرف كبير: القيم المنطقية تُكتب بحروف صغيرة دائماً: true و false.
  • الخلط بين null و undefined: إذا أردت أن تفرّغ متغيراً عمداً، اكتب null ولا تكتب undefined بنفسك.

سؤال

ما نوع القيمة '2010' (بين علامتي تنصيص)؟

سؤال

ما ناتج typeof null؟

  • النص (string) بين علامات تنصيص، والرقم (number) بدونها، ونوع واحد يشمل الصحيح والعشري.
  • القيمة المنطقية (boolean) إما true أو false.
  • undefined تعني «لم تُعطَ قيمة بعد»، و null تعني «فارغ عن قصد».
  • NaN تظهر عند عملية حسابية بلا معنى.
  • الأمر typeof يكشف نوع أي قيمة، مع الانتباه إلى أن typeof null تعطي object.