انواع البيانات Data Types

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

تحدد أنواع البيانات بشكل أساسي نوع البيانات التي يمكن تخزينها ومعالجتها داخل البرنامج.
هناك ستة أنواع أساسية من البيانات في JavaScript والتي يمكن تقسيمها إلى ثلاث فئات رئيسية: أنواع البيانات الأولية primary والمركبة composite وأنواع البيانات الخاصة special data types.
String و Number و Boolean هي أنواع بيانات أولية. الكائن Object والمصفوفة Array والدالة Function هي أنواع بيانات مركبة. بينما Undefined و Null هما أنواع بيانات خاصة.
يمكن أن تحتوي أنواع البيانات الأولية على قيمة واحدة فقط في كل مرة ، بينما يمكن أن تحتوي أنواع البيانات المركبة على مجموعات من القيم وكيانات أكثر تعقيدًا. في هذا الدرس سنناقش كل واحد منهم بالتفصيل.


بيانات السلسلة النصية String

يتم استخدام نوع بيانات السلسلة string data type لتمثيل البيانات النصية (أي تسلسل الأحرف). يتم إنشاء السلاسل النصية باستخدام علامات اقتباس مفردة أو مزدوجة تحيط بحرف واحد أو أكثر ، كما هو موضح أدناه:

مثال
تشغيل
  1. var a = 'Hi there!';
  2. var b = "Hi there!";

يمكننا تضمين علامات الاقتباس داخل السلسلة طالما أنها لا تتطابق مع علامات الاقتباس المحيطة بها.

مثال
تشغيل
  1. var a = "Let's have a cup of coffee."; // علامة اقتباس مفردة داخل علامات اقتباس مزدوجة
  2. var b= 'He said "Hello" and left.'; // علامات الاقتباس المزدوجة داخل علامات الاقتباس المفردة
  3. var c= 'We\'ll never give up.'; تجاهل علامة الإقتباس المفردة بإستخدام الشرطة المائلة للخلف backslash //

سوف نتعلم المزيد عن السلاسل في درس السلاسل.


البيانات الرقمية Number

يتم استخدام البيانات من نوع الأرقام number data type لتمثيل الأرقام الموجبة أو السالبة مع أو بدون منزلة عشرية ، أو الأرقام المكتوبة باستخدام التدوين الأسي على سبيل المثال 1.5e-4 (ما يعادل 1.5x10-4).

مثال
تشغيل
  1. var a = 25; رقم صحيح //
  2. var b = 80.5; رقم يحتوى على كسر عشري //
  3. var c = 4.25e+6; رقم بالتدوين الأسي ، يكافئ 4250000 //
  4. var c = 4.25e-6; رقم بالتدوين الأسي ، يكافئ 0.00000425 //

يتضمن نوع البيانات number أيضًا بعض القيم الخاصة وهي: Infinity و -Infinity و NaN. تمثل Infinity اللانهاية في الرياضيات ، وهي أكبر من أي رقم. اللانهاية هي نتيجة قسمة عدد غير صفري على 0 ، كما هو موضح أدناه:

مثال
تشغيل
  1. alert(16 / 0); // Infinity
  2. alert(-16 / 0); // -Infinity
  3. alert(16 / -0); // -Infinity

بينما يمثل NaN قيمة خاصة Not-a-Number. وهي عبارة عن نتيجة لعملية رياضية غير صالحة أو غير محددة ، مثل أخذ الجذر التربيعي للرقم -1 أو قسمة 0 على 0 او قسمة سلسلة نصية على رقم ... إلخ.

مثال
تشغيل
  1. alert("Some text" / 2); // NaN
  2. alert("Some text" / 2 + 10); // NaN
  3. alert(Math.sqrt(-1)); // NaN

سوف نتعلم المزيد عن الأرقام في درس الأرقام Numbers .


البيانات المنطقية Boolean

يمكن أن يحتوي نوع البيانات المنطقية على قيمتين فقط: true أو false . يتم استخدام هذا النوع من البيانات عادةً لتخزين قيم مثل نعم ( true ) أو لا ( false ) ، أو تشغيل (true) أو إيقاف (false) ، إلخ ، كما هو موضح في المثال التالي:

مثال
تشغيل
  1. var isReading = true; نعم ، أنا أقرأ //
  2. var isSleeping = false; لا ، أنا لست نائما //

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

مثال
تشغيل
  1. var a = 2, b = 5, c = 10;
  2. alert (b > a); // true
  3. alert (b > c); // false

سوف نتعلم المزيد عن المقارنات في درس الجمل الشرطية if/else .


البيانات غير المعرفة Undefined

يمكن أن يكون لنوع البيانات غير المعرفة قيمة واحدة فقط - القيمة الخاصة undefined . إذا تم الإعلان عن متغير ، ولكن لم يتم تحديد قيمة له ، تكون قيمته الإفتراضية undefined .

مثال
تشغيل
  1. var a;
  2. var b = "Hello World!";
  3. alert(a); // undefined
  4. alert(b); // Hello World!

البيانات الفارغة Null

هذا نوع بيانات خاص آخر يمكن أن يكون له قيمة واحدة فقط القيمة null . تعني القيمة null أنه لا توجد قيمة. ولاكن السلسلة الفارغة empty string ("") أو القيمة 0 ليست من البيانات الفارغة null ، القيمة null ببساطة لا شيء. يمكن إفراغ المتغير من محتوياته الحالية من خلال تحديد قيمته ب null .

مثال
تشغيل
  1. var a = null;
  2. alert(a); // null
  3. var b = "Hello World!";
  4. alert(b); // Hello World!
  5. b = null;
  6. alert(b); // null

البيانات من نوع كائن Object

object هو نوع بيانات معقد يسمح لنا بتخزين البيانات على شكل مجموعات. يحتوي الكائن object على خصائص ، مُعرَّفة على أنها زوج من المفاتيح والقيمة key-value pair. دائمًا ما يكون مفتاح الخاصية (إسم الخاصية) عبارة عن سلسلة نصية string ، ولكن يمكن أن تكون القيمة أي نوع من البيانات ، مثل السلاسل النصية strings أو أرقام numbers أو القيم المنطقية booleans أو أنواع البيانات المعقدة مثل المصفوفات arrays والدوال function او حتى كائنات أخرى objects. سنتعلم المزيد عن الكائنات objects في الدروس القادمة.
سيوضح لنا المثال التالي أبسط طريقة لإنشاء كائن في لغة JavaScript.

مثال
تشغيل
  1. var emptyObject = {};
  2. var person = { "name": "Murad", "username": "msmustafa", "age": 36};
  3. // لقراءة أفضل
  4. var car = {
  5. "modal": "BMW X3",
  6. "color": "white",
  7. "doors": 5
  8. };

يمكننا حذف علامات الاقتباس حول اسم الخاصية إذا كان الاسم هو اسم مسموح به في لغة JavaScript كما تعلمنا في درس المتغيرات. هذا يعني أن علامات الاقتباس مطلوبة حول "first-name" ولكنها اختيارية حول firstname . لذلك يمكن أيضًا كتابة الكائن car في المثال أعلاه على النحو التالي:

مثال
تشغيل
  1. var car = {
  2. modal: "BMW X3",
  3. color: "white",
  4. doors: 5
  5. };

سوف نتعلم المزيد عن الكائنات في درس الكائنات objects.


البيانات من نوع مصفوفة Array

المصفوفة Array هي نوع من الكائنات المستخدمة لتخزين قيم متعددة في متغير واحد. كل قيمة (عنصر) في المصفوفة لها موضع رقمي ، يُعرف باسم فهرسها index ، وقد تحتوي المصفوفة على اي نوع من البيانات ، ارقام او سلاسل نصية او بيانات منطقية او دوال ، او كائنات ، اوحتى مصفوفات أخرى. يبدأ فهرس المصفوفة من الرقم 0 ، بحيث يكون عنصر المصفوفة الأول arr[0] وليس arr[1].
إن أبسط طريقة لإنشاء مصفوفة هي تحديد عناصر المصفوفة كقائمة مفصولة بفواصل محاطة بأقواس مربعة square brackets ، كما هو موضح في المثال أدناه:

مثال
تشغيل
  1. var colors = ["Red", "Yellow", "Green","Orange"];
  2. var cities = ["Amman", "Zarqa", "Irbid","Aqaba"];
  3. alert(colors[0]); // Red
  4. alert(cities[2]); // Irbid

سوف نتعلم المزيد عن المصفوفات في درس المصفوفات Arrays.


البيانات من نوع دالة Function

الدالة function هي كائن قابل للاستدعاء ينفذ كتلة من الكود.
بما أن الدوال هي كائنات ، فمن الممكن إسنادها إلى متغيرات ، كما هو موضح في المثال أدناه:

مثال
تشغيل
  1. var greeting = function(){
  2. return "Hello World!";
  3. };
  4. التحقق من نوع المتغير greeting //
  5. alert(typeof greeting ); function //
  6. alert(greeting()); Hello World! //

في الواقع ، يمكن استخدام الدوال في أي مكان يمكن استخدام أي قيمة أخرى. يمكن تخزين الدوال في متغيرات وكائنات ومصفوفات. يمكن تمرير الدوال كوسيط argument لوظائف أخرى ، ويمكن إرجاع الدوال من دوال اخرى. لنلقي نظرة على المثال التالي:

مثال
تشغيل
  1. function createGreeting (name){
  2. return "Hello, " + name;
  3. };
  4. function displayGreeting (greetingFunction, userName){
  5. return greetingFunction(userName);
  6. };
  7. var result = displayGreeting(createGreeting, "Ahmed");
  8. alert(result); Hello, Ahmed //

سوف نتعلم المزيد عن الدوال في درس الدوال functions.


المعامل typeof في لغة JavaScript

يمكن استخدام المعامل typeof لمعرفة نوع البيانات التي يحتوي عليها المتغير. يمكن استخدامه مع أو بدون أقواس بالشكل التالي : typeof(x) او typeof x.
يكون المعامل typeof مفيدًا بشكل خاص في المواقف التي تحتاج فيها إلى معالجة المتغيرات حسب نوعها ، ولكن علينا استخدام هذا المعامل بحذر ، لأنه قد ينتج عنه نتيجة غير متوقعة في بعض الحالات ، كما هو موضح في المثال التالي:

مثال
تشغيل
  1. // Numbers
  2. typeof 15;// "number"
  3. typeof 42.7;// "number"
  4. typeof 2.5e-4;// "number"
  5. typeof Infinity;// "number"
  6. typeof NaN;// "number"
  7. // Strings
  8. typeof '';// "string"
  9. typeof "hello";// "string"
  10. typeof "12";// "string"
  11. // Booleans
  12. typeof true;// "boolean"
  13. typeof false;// "boolean"
  14. // Undefined
  15. typeof undefined;// "undefined"
  16. typeof undeclaredVariable;// "undefined"
  17. // null
  18. typeof null;// "object"
  19. // Objects
  20. typeof {name: "Ali", age: 18}; // "object"
  21. // Arrays
  22. typeof [1, 2, 4]; // "object"
  23. // Functions
  24. typeof function (){}; // "function"

كما ترون بوضوح في المثال أعلاه عندما نختبر القيمة null باستخدام المعامل typeof (السطر رقم 22 ) ، فقد أعادت "object" بدلاً من "null".
هذا قديم في JavaScript ، ولكن نظرًا لأن الكثير من الاكواد على الويب مكتوبة حول هذا السلوك ، بالتالي فإن إصلاحه سيؤدي إلى المزيد من المشاكل ، لذلك تم رفض فكرة إصلاح هذه المشكلة من قبل اللجنة التي تصمم وتحافظ على معايير JavaScript .