في معظم الأحيان، تقوم عوامل التشغيل والوظائف تلقائيًا بتحويل القيم المعطاة لها إلى النوع الصحيح.
على سبيل المثال، يقوم alert
تلقائيًا بتحويل أي قيمة إلى سلسلة لإظهارها. العمليات الرياضية تحول القيم إلى أرقام.
هناك أيضًا حالات نحتاج فيها إلى تحويل قيمة بشكل صريح إلى النوع المتوقع.
لا نتحدث عن الأشياء بعد
في هذا الفصل، لن نغطي الأشياء. في الوقت الحالي، سنتحدث فقط عن البدائيين.
لاحقًا، بعد أن نتعلم عن الكائنات، في فصل تحويل الكائنات إلى بدائي، سنرى كيف تتلاءم الكائنات.
يحدث تحويل السلسلة عندما نحتاج إلى شكل سلسلة القيمة.
على سبيل المثال، يقوم alert(value)
بذلك لإظهار القيمة.
يمكننا أيضًا استدعاء الدالة String(value)
لتحويل قيمة إلى سلسلة:
دع القيمة = صحيح؛ تنبيه (نوع القيمة)؛ // منطقية القيمة = سلسلة (قيمة)؛ // القيمة الآن هي سلسلة "صحيحة" تنبيه (نوع القيمة)؛ // خيط
تحويل السلسلة واضح في الغالب. يصبح false
"false"
، ويصبح null
"null"
، وما إلى ذلك.
يحدث التحويل الرقمي في الدوال والتعبيرات الرياضية تلقائيًا.
على سبيل المثال، عند تطبيق القسمة /
على غير الأرقام:
تنبيه("6"/"2"); // 3، يتم تحويل السلاسل إلى أرقام
يمكننا استخدام الدالة Number(value)
لتحويل value
بشكل صريح إلى رقم:
دع str = "123"; تنبيه (نوع الشارع)؛ // خيط Let num = Number(str); // يصبح رقم 123 تنبيه (نوع الرقم) ؛ // رقم
عادة ما يكون التحويل الصريح مطلوبًا عندما نقرأ قيمة من مصدر قائم على سلسلة مثل نموذج نصي ولكننا نتوقع إدخال رقم.
إذا لم تكن السلسلة رقمًا صالحًا، فإن نتيجة هذا التحويل هي NaN
. على سبيل المثال:
Let age = Number("سلسلة عشوائية بدلاً من رقم"); تنبيه (العمر)؛ // نان، فشل التحويل
قواعد التحويل الرقمي:
قيمة | يصبح… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 و 0 |
string | تتم إزالة المسافات البيضاء (بما في ذلك المسافات وعلامات التبويب t والأسطر الجديدة n وما إلى ذلك) من البداية والنهاية. إذا كانت السلسلة المتبقية فارغة، تكون النتيجة 0 . وبخلاف ذلك، سيتم "قراءة" الرقم من السلسلة. خطأ يعطي NaN . |
أمثلة:
تنبيه(رقم("123")); // 123 تنبيه(رقم("123z")); // NaN (خطأ في قراءة رقم عند "z") تنبيه(الرقم(صحيح)); // 1 تنبيه(رقم(خطأ)); // 0
يرجى ملاحظة أن null
و undefined
يتصرفان بشكل مختلف هنا: null
يصبح صفرًا بينما يصبح undefined
NaN
.
تقوم معظم العوامل الرياضية أيضًا بإجراء مثل هذا التحويل، وسنرى ذلك في الفصل التالي.
التحويل المنطقي هو الأبسط.
يحدث ذلك في العمليات المنطقية (سنلتقي لاحقًا باختبارات الحالة وأشياء أخرى مماثلة) ولكن يمكن أيضًا تنفيذها بشكل صريح من خلال استدعاء Boolean(value)
.
قاعدة التحويل:
القيم التي تكون "فارغة" بشكل حدسي، مثل 0
، وسلسلة فارغة، و null
، و undefined
، و NaN
، تصبح false
.
القيم الأخرى تصبح true
.
على سبيل المثال:
تنبيه(منطقية(1)); // حقيقي تنبيه(منطقية(0)); // خطأ شنيع تنبيه( Boolean("hello")); // حقيقي تنبيه( Boolean("")); // خطأ شنيع
يرجى ملاحظة: السلسلة التي تحتوي على صفر "0"
true
تتعامل بعض اللغات (تحديدًا PHP) مع "0"
على أنه false
. لكن في JavaScript، تكون السلسلة غير الفارغة true
دائمًا.
تنبيه( Boolean("0")); // حقيقي تنبيه( Boolean(" ")); // المسافات، صحيحة أيضًا (أي سلسلة غير فارغة تكون صحيحة)
تحويلات النوع الثلاثة الأكثر استخدامًا هي تحويلات السلسلة، والرقم، والمنطقية.
String Conversion
- يحدث عندما نقوم بإخراج شيء ما. يمكن تنفيذها باستخدام String(value)
. عادةً ما يكون التحويل إلى سلسلة واضحًا بالنسبة للقيم البدائية.
Numeric Conversion
– يحدث في العمليات الحسابية. يمكن إجراؤها باستخدام Number(value)
.
التحويل يتبع القواعد:
قيمة | يصبح… |
---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | تتم قراءة السلسلة "كما هي"، ويتم تجاهل المسافات البيضاء (بما في ذلك المسافات وعلامات التبويب t والأسطر الجديدة n وما إلى ذلك) من كلا الجانبين. تصبح السلسلة الفارغة 0 . خطأ يعطي NaN . |
Boolean Conversion
– يحدث في العمليات المنطقية. يمكن إجراؤها باستخدام Boolean(value)
.
يتبع القواعد:
قيمة | يصبح… |
---|---|
0 ، null ، undefined ، NaN ، "" | false |
أي قيمة أخرى | true |
معظم هذه القواعد سهلة الفهم والحفظ. الاستثناءات الملحوظة التي يرتكب فيها الأشخاص الأخطاء عادة هي:
undefined
هو NaN
كرقم، وليس 0
.
تعتبر "0"
والسلاسل النصية ذات المسافة فقط مثل " "
صحيحة باعتبارها قيمة منطقية.
لا يتم تغطية الكائنات هنا. سنعود إليها لاحقًا في فصل "الكائن إلى التحويل البدائي" المخصص حصريًا للكائنات بعد أن نتعلم المزيد من الأشياء الأساسية حول JavaScript.