هناك ثلاثة أنواع من خمس طرق لتحويل البيانات إلى أرقام في JS، بما في ذلك:
•Coercion، يتم تحويل أنواع البيانات الأساسية لـ JS إلى أنواع مقابلة (Number(v)) بهذه الطريقة
•الدوال الأصلية، هاتان الوظيفتان لهما نتائج مختلفة (parseInt(v,radix), parseFloat(v))
• التحويل الضمني، سيقوم JS بتحويل المتغير إلى النوع المقابل (حساب البت، الحساب الرياضي) أثناء التنفيذ
يمكن أيضًا تقسيم القيم الأصلية المحولة ببساطة إلى ثلاث فئات: الكائنات والقيم الخاصة والسلاسل.
تتضمن القيم الخاصة في JS ما يلي.
• غير محدد، غير محدد، عندما يتم الإعلان عن متغير ولكن لم يتم تعيين قيمة له أو تكون قيمة السمة غير الموجودة في الكائن هي هذه.
•NaN/Infinity، هذان "رقمان" عنيدان (typeof == number)، وهما يمثلان أرقامًا غير رقمية وأعدادًا لا نهائية على التوالي. يبدو أنه عديم الفائدة إذا فشل التحويل إلى رقم، فإن القيمة المرجعة هي NaN بشكل أساسي.
•null، يُستخدم ككائن بقيمة صفر (typeof == object).
•صحيح/خطأ، قيمة منطقية، تمثل صواب أو خطأ، أي ما يعادل 1/0.
بالنسبة للسلاسل، يمكن أيضًا تقسيمها بناءً على المحتوى. وفقًا للتعبيرات الرقمية لـ JS، يمكن تقسيمها إلى قانونية وغير قانونية. هناك عدة طرق مختلفة لتصنيف الأرقام القانونية:
• الإشارة: إشارة إيجابية، إشارة سلبية، غير موقعة
• القاعدة: ثماني، عشري، سداسي عشري
• التدوين العلمي
• الكسور العشرية والأعداد الصحيحة، واختصارات الكسور العشرية
بناءً على التصنيف أعلاه، قمت بإنشاء عرض توضيحي لاختبار نتائج الطرق المختلفة والتحويلات الرقمية. لقطة الشاشة أدناه هي التحويل تحت الكروم.
بالنظر إلى النتائج، فإن حسابات البت هي وحدها القادرة على تحويل أي قيمة إلى عدد محدود (isFinite). نتائج الحسابات الرياضية والتحويل القسري هي نفسها.
يرتبط تحويل القيم الخاصة بالقيمة الأصلية وطريقة التحويل. تفشل كافة تحويلات parseInt/parseFloat وتعيد NaN.
•يتم تحويل NaN/undef إلى NaN بطرق أخرى؛
• يتم تحويل Infinity إلى NaN بواسطة parseInt، ولا تغير الطرق المتبقية قيمته؛
لا يمكن تحويل null/false/true بواسطة parseInt/parseFloat وإرجاع NaN.
يعتمد تحليل تحويل السلاسل بشكل أساسي على طريقة التحويل، لكن جميع الطرق لا تدعم الأرقام الممثلة بالثماني، ولكن يتم التعامل معها على أنها أرقام عشرية مقابلة.
• تقوم الحسابات المنطقية بتحويل التعبيرات القانونية باستثناء الأرقام السداسية العشرية السالبة وتجاهل الجزء العشري من التعبيرات غير القانونية بإرجاع الصفر.
• الحساب/الرقم الرياضي يشبه الحساب المنطقي، ولكنه لا يقوم بتقريب الكسور العشرية؛ فالتعبيرات غير القانونية بخلاف السلاسل الفارغة تُرجع NaN.
يحتفظ •parseInt أيضًا بالجزء الصحيح فقط؛ ولكن بالنسبة للتعبيرات غير القانونية، فإنه يأخذ الجزء الصحيح القانوني (العشري، السداسي العشري، باستثناء التدوين العلمي) أمام السلسلة ويحوله، وإلا فإنه يعيد NaN.
•parseFloat يشبه parseInt، فيما عدا أنه يمكنه التعرف على الجزء العشري والاحتفاظ به ولا يدعم الأرقام السداسية العشرية.