١٦ مايو ٢٠٢٣

نوع التحويلات

معظم الوقت، المعاملات والدوال تحول أوتوماتيكياً القيم المعطاة لهم للنوع الصحيح.

على سبيل المثال، alert تحول أوتوماتيكياً أي قيمة إلى نص لإظهاره. المعاملات الرياضية تحول القيم إلى أرقام.

هناك أيضاً حالات نحتاج إلى تصريح تحويل القيمة إلى النوع المطلوب.

لا نتحدث عن objects بعد

في هذا الفصل، لن نغطي الكائنات. الآن سوف نتحدث عن الأنواع الأساسية.

فيما بعد، بعد أن نتعلم عن الكائنات، في هذا الفصل تحويل الكائنات إلى قيم مفرده سنرى كيف تتلائم الكائنات فيه.

تحويل النصوص

التحويل إلى نص يحدث عندما نحتاج الصورة النصية للقيمة.

على سبيل المثال، alert(value) تفعل ذلك لإظهار القيمة.

نستطيع أيضاً استدعاء دالة String(value) لكي نحول القيمة إلى نص:

let value = true;
alert(typeof value); // boolean

value = String(value); // الأن القيمة هي نص تساوي "true"
alert(typeof value); // string

التحويل إلى نص واضح جداً. false تصبح "false"و null تصبح "null"، إلخ.

التحويل الرقمي

التحويل إلى رقم يتم أوتوماتيكياً في المعاملات والتعبيرات الرياضية.

على سبيل المثال، في حالة القسمة / عندما يتم تطبيقها على نوع غير رقمي:

alert( "6" / "2" ); // 3، النصوص تتحول إلى أرقام

نستطيع استخدام دالة Number(value) للتصريح بتحويل القيمة value إلى رقم:

let str = "123";
alert(typeof str); // string

let num = Number(str); // تصبح رقم 123

alert(typeof num); // number

تصريح التحويل عادة يكون مطلوبا عندما نقرأ قيمة من مصدر يعتمد على النص مثل حقل إدخال في نموذج لكن نتوقع أن يتم إدخال رقم.

لو كان النص ليس رقما صالحا، ستكون النتيجة لمثل هذا التحويل هي NaN. على سبيل المثال:

let age = Number("an arbitrary string instead of a number");

alert(age); // NaN، التحويل فشل

قواعد التحويل الرقمي:

القيمة تصبح…
undefined NaN
null 0
true and false 1 and 0
string المساحات البيضاء في البداية والنهاية يتم إزالتها. لو باقي النص فارغ، النتيجة هي 0. غير ذلك، الرقم “يتم قرائته” من النص. أي خطأ يعطيNaN.

أمثلة:

alert( Number("   123   ") ); // 123
alert( Number("123z") );      // NaN (خطأ في قراءة الرقم عند "z")
alert( Number(true) );        // 1
alert( Number(false) );       // 0

من فضلك لاحظ أن null و undefined تسلك سلوكا مختلفا هنا: null تصبح صفر بينما undefined تصبح NaN.

معظم المعاملات الرياضية أيضا تقوم بمثل هذا التحويل، سوف نرى ذلك في الفصل القادم.

التحويل المنطقي

التحويل إلى قيم منطقية هو اﻷسهل.

إنه يحدث في معاملات منطقية (فيما بعد سنقابل إختبارات مشروطة وأشياء أخرى مشابهة) لكن أيضاً يمكن تنفيذها تصريحياً عن طريق إستدعاء Boolean(value).

قاعدة التحويل:

  • القيم التي تكون حدسية “فارغة”، مثل 0 ونص فارغ و null وundefined و NaN تصبح false.
  • كل القيم الأخرى تصبح true.

على سبيل المثال:

alert( Boolean(1) ); // true
alert( Boolean(0) ); // false

alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
من فضلك لاحظ: النص المكون من صفر "0" يكون true

بعض اللغات (أعني PHP) تعامل "0" على أنه false. لكن في جافا سكريبت، النص غير الفارغ دائماً true.

alert( Boolean("0") ); // true
alert( Boolean(" ") ); // المسافات، أيضاً true (أي نص غير فارغ يكون true)

ملخص

تحويلات الأنواع الثلاثة الأكثر إستخداماً هي إلى نص، رقم، قيمة منطقية.

التحويل للنص – يحدث عندما نظهر شيء. يمكن تنفيذه عن طريق String(value). التحويل إلى نص عادة واضح للقيم البسيطة.

التحويل إلى رقم – يحدث في المعاملات الرياضية. يمكن تنفيذها عن طريق Number(value).

التحويل يتبع القواعد:

القيمة تصبح…
undefined NaN
null 0
true / false 1 / 0
string يتم قراءة النص “كما هو”،المسافات البيضاء من الجانبين يتم تجاهلها. النص الفارغ يصبح 0. الخطأ NaN.

التحويلات المنطقية – يحدث في المعاملات المنطقية. يتم تنفيذه عن طريق Boolean(value).

يتبع القواعد الأتية:

القيمة تصبح…
0, null, undefined, NaN, "" false
أي قيمة أخرى true

معظم هذه القواعد سهل فهمها وحفظها. الإستثناءات الملحوظة عندما يفعل الناس عادة أخطاء وهي:

  • undefined تكون NaN كرقم ليست 0.
  • "0" والنصوص التي تحتوي على مسافات فقط " " هي true كقيمة منطقية.

لم يتم تغطية الكائنات هنا. سنعود إليهم لاحقاً في هذا الفصل تحويل الكائنات إلى قيم مفرده تكون مكرسة حصرياً للكائنات بعد أن تعمل أشياء أساسية أكثر عن جافا سكريبت .

خريطة الدورة التعليمية