انتقل إلى المحتوى

٤.٤ أنواع البيانات — الجزء الأول

أنواع البيانات الأولية

التمرين 1: ما نوع قيمة المتغير التالي؟

var myName = "Ali";

console.log(typeof myName);

النتيجة هي: string

التمرين 2: ما نوع قيمة المتغير التالي؟

var myAge = 3;

console.log(typeof myAge);

النتيجة هي: number

التمرين 3: ما نوع قيمة المتغير التالي؟

var isLoggedIn = false;

console.log(typeof isLoggedIn);

النتيجة هي: boolean

التمرين 4: ما نوع قيمة المتغير التالي؟

var myHeight = undefined;

console.log(typeof myHeight);

النتيجة هي: undefined

التمرين 5: ما نوع قيمة المتغير التالي؟

var myfavoriteBigNumber = 4712n;

console.log(typeof myfavoriteBigNumber);

النتيجة هي: bigint

bigint

bigint نوع بيانات للأعداد الصحيحة ذات الدقة الاعتباطية.

يمكنك إنشاء قيمة bigint بإلحاق n بالعدد الصحيح.

نوع البيانات

من الأنواع الأولية في JavaScript: ستة أنواع نعرضها هنا :

  1. السلاسل النصية (String).
  2. الأعداد (Number).
  3. القيم المنطقية (Boolean).
  4. الأعداد الصحيحة الكبيرة (BigInt).
  5. undefined.
  6. الرموز (Symbol)، وسنتعلّمها لاحقًا. وهناك أيضًا null، وهي نوع أولي رغم أن typeof يُرجع لها "object".

typeof

يمكننا فحص النوع باستخدام typeof

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

تُسمّى الأنواع السابقة أنواع بيانات أولية.

التمرين 6: حوّل السلسلة التالية إلى أحرف صغيرة.

var myString = "GREAT";

myString.toLowerCase();

console.log(myString);

النتيجة هي: GREAT

لم تتغيّر السلسلة الأصلية بعد استخدام toLowerCase ؛ لأن القيم النصية غير قابلة للتعديل في موضعها.

السلاسل النصية غير قابلة للتعديل

لا يمكن تعديل القيمة النصية نفسها؛ يمكن إنشاء قيمة جديدة أو إسنادها إلى المتغير.

التمرين 7: حوّل العدد التالي إلى سلسلة نصية. استخدم number.toString().

var num = 80;

var numToString = num.toString();

console.log("the type of num: " + typeof num);
console.log("the type of numToString: " + typeof numToString);

النتيجة كما يلي:

the type of num: number
the type of numToString: string

لم يتغيّر العدد الأصلي بعد استخدام toString ؛ لأن القيم العددية غير قابلة للتعديل في موضعها.

الأعداد غير قابلة للتعديل

لا تتغيّر القيمة العددية نفسها، بل تُنتج العمليات قيمًا جديدة.

التمرين 8: حوّل القيمة المنطقية التالية إلى نص. استخدم boolean.toString().

var bool = true;

var boolToString = bool.toString();

console.log("the type of bool: " + typeof bool);
console.log("the type of boolToString: " + typeof boolToString);

النتيجة كما يلي:

the type of bool: boolean
the type of boolToString: string

لم تتغيّر القيمة المنطقية الأصلية بعد استخدام toString ؛ لأن القيم المنطقية غير قابلة للتعديل في موضعها.

القيم المنطقية غير قابلة للتعديل

لا يمكن تعديل القيمة المنطقية نفسها.

التمرين 9: حوّل قيمة bigint التالية إلى نص. استخدم bigint.toString().

var bigNum = 54540n;

var bigNumToString = bigNum.toString();

console.log("the type of bigNum: " + typeof bigNum);
console.log("the type of bigNumToString: " + typeof bigNumToString);

النتيجة كما يلي:

the type of bigNum: bigint
the type of bigNumToString: string

لم تتغيّر قيمة BigInt الأصلية بعد استخدام toString ؛ لأن قيم BigInt غير قابلة للتعديل في موضعها.

قيم BigInt غير قابلة للتعديل

لا يمكن تعديل قيمة BigInt نفسها.

معلومة

القيم الأولية في JavaScript غير قابلة للتعديل في موضعها، لكن يمكن إسناد قيمة أخرى إلى المتغير.


تدرّب أكثر!

التمرين 10: هل يحمل المتغير التالي قيمة أولية؟

نعم، myVar يحمل عددًا، وهو قيمة أولية.

var myVar =  12;

console.log("The type is: " + typeof myVar);

النتيجة هي: The type is: number

التمرين 11: أعدنا كتابة console.log في التمرين 10 كما يلي.

var myVar = 5;

console.log(`The type is: ${typeof myVar}`);

النتيجة هي: The type is: number

القوالب النصية

القوالب النصية (Template Literals) سلاسل نصية تسمح بتضمين تعبيرات داخلها.

تُكتب بين علامتي اقتباس خلفيتين: `your string here`.

يمكن تضمين تعبير باستخدام ${your expression here}.

كيف أكتب علامة الاقتباس الخلفية؟

يعتمد ذلك على تخطيط لوحة المفاتيح.

في بعض تخطيطات QWERTY وQWERTZ، توجد قرب المفتاح ESC . وقد يختلف موضعها بحسب اللغة والتخطيط.

التمرين 12: هل يحمل المتغير قيمة أولية؟ تلميح: استخدم القوالب النصية.

نعم، myVar يحمل undefined، وهي قيمة أولية.

var myVar = undefined;

console.log(`The type is: ${typeof myVar}`);

النتيجة هي: The type is: undefined

التمرين 13: هل يحمل المتغير قيمة أولية؟ تلميح: استخدم القوالب النصية.

نعم، myVar يحمل سلسلة نصية، وهي قيمة أولية.

var myVar = "My beautiful world is in making.";

console.log(`The type is: ${typeof myVar}`);

النتيجة هي: The type is: string

التمرين 14: هل يحمل المتغير قيمة أولية؟ تلميح: استخدم القوالب النصية.

نعم، myVar يحمل BigInt، وهي قيمة أولية.

var myVar =  153n;

console.log(`The type is: ${typeof myVar}`);

النتيجة هي: The type is: bigInt

التمرين 15: هل يحمل المتغير قيمة أولية؟ تلميح: استخدم القوالب النصية.

نعم، myVar يحمل قيمة منطقية، وهي قيمة أولية.

var myVar =  true;

console.log(`The type is: ${typeof myVar}`);

النتيجة هي: The type is: boolean

معلومة

القيم الأولية في JavaScript لا تمتلك خصائص أو طرائق خاصة بها.

سؤال

إذا كانت القيم الأولية لا تمتلك طرائق، فكيف نصل إلى الخاصية length في السلاسل؟ وكيف نستخدم الطريقة toString مع الأعداد والقيم المنطقية؟

سؤال يفتح بابًا جديدًا! لنستكشف.


باني كائنات String

التمرين 16: أسند "You can do it" إلى myVar، واعرض نوع وقيمة myVar في وحدة التحكم.

var myVar = "You can do it";

console.log(`The value is: ${myVar}`);
console.log(`The type is: ${typeof myVar}`);

النتيجة كما يلي:

The value is: You can do it
The type is: string

القيم النصية الحرفية

القيمة النصية الحرفية هنا سلسلة تُكتب بين علامتي اقتباس مفردتين أو مزدوجتين.

في التمرين 16; "You can do it" قيمة نصية حرفية.

التمرين 17: أسند new String("You can do it.") على myVar، واعرض نوع وقيمة myVar في وحدة التحكم.

var myVar = new String("You can do it");

console.log(`The value is: ${myVar}`);
console.log(`The type is: ${typeof myVar}`);

النتيجة كما يلي:

The value is: You can do it
The type is: object

التمرين 18: ارجع إلى التمرين 17؛ ما طول myVar .

var myVar = new String("You can do it");

console.log(`The length is: ${myVar.length}`);

النتيجة هي: The length is: 13

التمرين 19: ارجع إلى التمرين 17؛ حوّل myVar إلى أحرف كبيرة.

var myVar = new String("You can do it");

console.log(`The new String is: ${myVar.toUpperCase()}`);

النتيجة هي: The new String is: YOU CAN DO IT*

كائن String

كائن String غلاف لقيمة نصية يوفّر خصائص وطرائق مرتبطة بها.

القيمة النصية الأولية وكائن String

عند الوصول إلى خاصية أو طريقة لقيمة نصية، تستخدم JavaScript غلاف String مؤقتًا.

يوفّر هذا الغلاف خصائص السلاسل وطرائقها.

بعد العملية لا نحتاج إلى الاحتفاظ بالغلاف المؤقت؛ وتظل القيمة الأصلية أولية.

إذن لا تمتلك القيمة الأولية نفسها طرائق، لكن الغلاف يتيح استخدامها.

التمرين 20: ارجع إلى التمرين 17; myVar كائن؛ ما الدالة البانية التي أنشأته؟ تلميح: استخدم myVar.constructor.

var myVar = new String("You can do it");

console.log(`${myVar.constructor}`);

النتيجة هي: function String() { [native code] }

الباني String()

عند استخدام new مع String()، يُنشَأ كائن يغلف قيمة نصية.

لإنشاء كائن نصي باستخدام String() ، استخدم الكلمة المفتاحية new متبوعةً بـ String()، وضع النص بين علامتي اقتباس new String("You string here").

التمرين 21: أنشئ كائنًا نصيًا باستخدام String() بالقيمة "Resist not evil. Face it! You are higher than evil."

var myQuote = new String("Resist not evil. Face it! You are higher than evil.");

console.log(`${myQuote}`);

النتيجة هي: Resist not evil. Face it! You are higher than evil.

التمرين 22: ارجع إلى التمرين 21؛ ما نوع myQuote ؟

var myQuote = new String("Resist not evil. Face it! You are higher than evil.");

console.log(`The type is: ${typeof myQuote}`);

النتيجة هي: The type is: object

التمرين 23: ارجع إلى التمرين 21؛ أي نوع أولي تقابله القيمة myQuote ؟ تلميح: استخدم typeof myQuote.valueOf()

var myQuote = new String("Resist not evil. Face it! You are higher than evil.");

console.log(`The primitive type is: ${typeof myQuote.valueOf()}`);

النتيجة هي: The primitive type is: string

valueOf

العامل valueOf() تُرجع القيمة الأولية التي يغلفها الكائن.

التمرين 24: أنشئ كائنًا نصيًا باستخدام String() بالقيمة "Only knowledge can free and save us, but with knowledge must go virtue.". اعرض القيمة ونوعها وقيمتها الأولية المقابلة.

var myQuote = new String("Only knowledge can free and save us, but with knowledge must go virtue.");

console.log(`The value is: ${myQuote}`);
console.log(`The type is: ${typeof myQuote}`);
console.log(`The primitive type is: ${typeof myQuote.valueOf()}`);

النتيجة كما يلي:

The value is: Only knowledge can free and save us, but with knowledge must go virtue.
The type is: object
The primitive type is: string

التمرين 25: أنشئ كائنًا نصيًا باستخدام String() بالقيمة "Don't look back--forward, infinite energy, infinite enthusiasm, infinite daring, and infinite patience.". اعرض القيمة ونوعها وقيمتها الأولية المقابلة.

var myQuote = new String("Don't look back--forward, infinite energy, infinite enthusiasm, infinite daring, and infinite patience.");

console.log(`The value is: ${myQuote}`);
console.log(`The type is: ${typeof myQuote}`);
console.log(`The primitive type is: ${typeof myQuote.valueOf()}`);

النتيجة كما يلي:

The value is: Only knowledge can free and save us, but with knowledge must go virtue.
The type is: object
The primitive type is: string