الدرس الرابع: أنواع البيانات في JavaScript – شرح مبسط للمبتدئين
تُعد أنواع البيانات أحد أهم المفاهيم الأساسية في تعلم البرمجة. في JavaScript، تُصنف كل قيمة تحت نوع بيانات محدد يُحدد كيفية تخزينها والتعامل معها في البرنامج. فهم هذه الأنواع يساعد المبرمج على كتابة كود أكثر دقة وفعالية، والتعامل مع العمليات الحسابية والمنطقية بطريقة صحيحة، بالإضافة إلى تحسين الأداء والتصحيح.

أنواع البيانات الأساسية (Primitive Types) في JavaScript
- String: تمثل سلسلة نصية تتكون من حروف، أرقام، أو رموز. على سبيل المثال،
"مرحبا بالعالم"
هو نص يمكن استخدامه لعرض النصوص والتعامل مع البيانات النصية. يمكن استخدام **String** في JavaScript لتخزين أسماء الأشخاص، العناوين، أو أي نص آخر. - Number: تمثل الأعداد سواء كانت أعداد صحيحة مثل
10
أو أعداد عشرية مثل3.14
. تجدر الإشارة إلى أن JavaScript لا تفرق بين الأعداد الصحيحة والعشرية في نوع البيانات، فالأعداد يتم تمثيلها باستخدام نفس النوع. على سبيل المثال،let num = 100;
وlet pi = 3.14;
هما نوع واحد من البيانات. - Boolean: نوع بيانات منطقي يحتوي على قيمتين فقط:
true
أوfalse
. يُستخدم **Boolean** في اتخاذ القرارات داخل البرنامج مثل التحقق من صحة الإدخال أو حالات التشغيل (مثل إذا كان المستخدم مسجلاً الدخول أم لا). على سبيل المثال:let isLoggedIn = true;
. - Undefined: يعني أن المتغير تم تعريفه ولكن لم تُخصص له قيمة بعد. القيمة
undefined
تُعرض تلقائيًا عندما يتم إنشاء متغير دون تعيين قيمة له. على سبيل المثال، إذا تم تعريف متغير ولم يعطى قيمة، سيتم تلقائيًا تعيين قيمةundefined
:let user;
. - Null: تمثل "عدم وجود قيمة" أو "فارغ"، وتُستخدم لتحديد أن المتغير لا يحتوي على أي قيمة حالياً بشكل متعمد. على سبيل المثال، يمكن تعيين
null
لمتغير لتحديد أن المتغير ليس له قيمة في الوقت الحالي:let address = null;
. - Symbol: هو نوع بيانات جديد في JavaScript يُستخدم لإنشاء رموز فريدة. يمكن استخدام **Symbol** كمفاتيح في الكائنات، وهو مفيد خاصة في البرمجة المتقدمة حيث نحتاج إلى ضمان فريدة المفاتيح. على سبيل المثال،
let sym = Symbol("unique");
يتم استخدامه لخلق مفاتيح فريدة يمكن أن تكون مفيدة في معالجة البيانات. - BigInt: يُستخدم لتخزين أعداد صحيحة ضخمة جدًا تتجاوز الحد الأقصى لنوع
Number
التقليدي، مثل الأعداد الأكبر من253-1
. مثلاً، لتخزين أرقام ضخمة مثلBigInt(9007199254740991)
يمكن استخدامه في حالات مثل حسابات التشفير أو المعاملات المالية.
// أمثلة:
let name = "خالد"; // String
let age = 30; // Number
let isOnline = true; // Boolean
let salary; // Undefined
let address = null; // Null
let uniqueId = Symbol("id"); // Symbol
let bigNumber = BigInt(9007199254740991); // BigInt
التفسير الشامل لأنواع البيانات
في JavaScript، يتم التعامل مع الأنواع البدائية (Primitive types) كقيم ثابتة ولا يمكن تعديلها مباشرة، وهذا يعني أن أي عملية تغيير على متغير من هذه الأنواع سيؤدي إلى إنشاء قيمة جديدة. على سبيل المثال، إذا قمت بتغيير قيمة المتغير let age = 30;
إلى قيمة أخرى مثل age = 35;
، فإن المتغير سيشير إلى قيمة جديدة بدلاً من تعديل القيمة الأصلية مباشرة.
نصيحة للمبتدئين:
قبل البدء في استخدام JavaScript بشكل كامل، تأكد من فهمك لكيفية التعامل مع هذه الأنواع من البيانات الأساسية، حيث أن هذا سيشكل الأساس لأي مشاريع أو تطبيقات JavaScript تقوم بتطويرها في المستقبل.
2. أنواع البيانات المركّبة (Non-Primitive Types)
في JavaScript، أنواع البيانات المركبة تسمح بتخزين مجموعات من القيم أو وظائف قابلة للتنفيذ. هذه الأنواع أكثر تعقيدًا من الأنواع الأولية (Primitive types) وتوفر مرونة أكبر في كيفية تنظيم البيانات. إليك أبرز هذه الأنواع:
-
Object: هو نوع بيانات يُمثل كائنًا يحتوي على خصائص (مفاتيح) وقيم مرتبطة بها. يمكن أن تكون القيم أي نوع من أنواع البيانات، بما في ذلك كائنات أخرى. تُستخدم الكائنات لتمثيل البيانات المعقدة وتركيبها بطريقة منظمة، مثل تمثيل الشخص أو المنتج أو العنصر في موقع.
مثال:
let user = { name: "Ali", age: 30, address: "Cairo" };
-
Array: هو نوع خاص من الكائنات يُخزن مجموعة من القيم المرتبة تحت فهارس رقمية تبدأ من صفر. يمكن أن تحتوي المصفوفة على عناصر من أي نوع بيانات، وتُستخدم لتخزين قوائم أو مجموعات من البيانات مثل الأرقام أو النصوص أو حتى كائنات أخرى.
مثال:
let colors = ["red", "green", "blue"];
-
Function: هي كائن قابل للتنفيذ يحتوي على مجموعة من التعليمات البرمجية. تُستخدم الوظائف لأداء مهام محددة مثل معالجة البيانات أو تنفيذ منطق محدد. يمكن أيضًا تمرير الوظائف كقيم أو إرجاعها من دوال أخرى.
مثال:
function greet() { console.log("مرحبا"); }
لمزيد من التفاصيل حول هذه الأنواع، يمكنك زيارة MDN - التعامل مع الكائنات في JavaScript.
// كائن (Object) let person = { name: "Ali", age: 25, isStudent: false }; // مصفوفة (Array) let colors = ["أحمر", "أخضر", "أزرق"];
التفسير الكامل للأنواع المركبة:
الأنواع المركبة هي أنواع بيانات لا تحتوي على قيمة ثابتة كما في الأنواع الأولية، بل هي عبارة عن كائنات أو مجموعات من القيم أو وظائف، حيث تُخزن هذه القيم داخل المتغيرات. على سبيل المثال:
- Object: الكائنات هي نوع مرن يستخدم لتخزين مجموعة من القيم التي يمكن أن تكون من أنواع مختلفة، كما يمكن تضمين دوال داخل الكائنات لتعمل كوظائف مرتبطة بتلك الكائنات.
- Array: المصفوفات هي نوع من الكائنات الذي يحتوي على عناصر مرتبة وفهرسة، وتُستخدم بشكل رئيسي لتخزين البيانات المرتبطة ببعضها البعض. يمكن للمصفوفات أن تحتوي على أنواع متعددة من البيانات (مثل الأرقام والنصوص والكائنات).
- Function: الوظائف هي كائنات أيضًا في JavaScript وتُستخدم لتجميع مجموعة من التعليمات البرمجية لأداء مهمة معينة. يمكن أن تُعاد الدوال من دوال أخرى، مما يتيح لك استخدام الوظائف بشكل مرن في البرمجة.
نصيحة للمبتدئين:
عند البدء في تعلم JavaScript، تأكد من أن لديك فهم قوي للأنواع المركبة مثل الكائنات والمصفوفات والوظائف، لأنها تعتبر أساسية لبناء التطبيقات الحديثة. تعلم كيفية التعامل مع هذه الأنواع سيساعدك على كتابة أكواد مرنة وفعالة لتطوير تطبيقات الويب التفاعلية.
3. طريقة التعرف على نوع البيانات
في JavaScript، يمكنك استخدام الدالة المدمجة typeof
لمعرفة نوع أي متغير أو قيمة بسهولة. هذه الدالة تعيد نصًا يصف نوع البيانات.
let x = 100; console.log(typeof x); // "number" let name = "Ali"; console.log(typeof name); // "string" let isActive = true; console.log(typeof isActive); // "boolean" let user = { name: "Sara", age: 25 }; console.log(typeof user); // "object" let fn = function() {}; console.log(typeof fn); // "function" let nothing = null; console.log(typeof nothing); // "object" (خاصية قديمة في JavaScript) let notDefined; console.log(typeof notDefined); // "undefined"
لاحظ أن typeof null
يعطي نتيجة "object"، وهذا سلوك قديم معروف في JavaScript يجب الانتباه إليه.
استخدام typeof
يساعدك في التصحيح والتحقق من البيانات أثناء تطوير البرامج.
4. الفرق بين null
و undefined
في JavaScript، undefined تعني أن المتغير تم تعريفه لكنه لم يُعطَ أي قيمة بعد، أي أنه في حالة انتظار تعيين قيمة مستقبلية. أما null فهي قيمة متعمدة تُستخدم للدلالة على "لا توجد قيمة" أو أن المتغير فارغ عمدًا.
let a; console.log(a); // undefined - المتغير معرف لكن لم يُعطَ قيمة let b = null; console.log(b); // null - تم تعيين قيمة صريحة تعني "لا قيمة"
الفرق الجوهري هو أن undefined
يحدث تلقائيًا عندما لا تُعطى قيمة للمتغير، بينما null
يتم تعيينها يدويًا من قبل المبرمج للدلالة على عدم وجود قيمة.
فهم هذا الفرق مهم في كتابة كود صحيح والتعامل مع البيانات بشكل دقيق.
للمزيد من المعلومات، يمكنك زيارة: MDN - null | MDN - undefined