٢٦ يونيو ٢٠٢٠

Type Conversions

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

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

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

Not talking about objects yet

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

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

String Conversion

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

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

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

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

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

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

Numeric Conversion

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

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

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 Conversion

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

إنه يحدث في معاملات منطقية (فيما بعد سنقابل إختبارات مشروطة وأشياء أخرى مشابهة) لكن أيضاً يمكن تنفيذها تصريحياً عن طريق إستدعاء 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)

Summary

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

التحويل للنص – يحدث عندما نظهر شيء. يمكن تنفيذه عن طريق 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 كقيمة منطقية.

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

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

التعليقات

إقرأ هذا قبل أن تضع تعليقًا…
  • إذا كان لديك اقتراحات أو تريد تحسينًا - من فضلك من فضلك إفتح موضوعًا فى جيتهاب أو شارك بنفسك بدلًا من التعليقات.
  • إذا لم تستطع أن تفهم شيئّا فى المقال - وضّح ماهو.
  • إذا كنت تريد عرض كود استخدم عنصر <code> ، وللكثير من السطور استخدم <pre>، ولأكثر من 10 سطور استخدم (plnkr, JSBin, codepen…)