JavaScript: طرق الأدوات المساعدة في JavaScript

آخر تحديث: 2026-10-13

غطينا تحويلات الأنواع — الآن لنتعلم مجموعة من طرق الأدوات المساعدة التي ستستخدمها يومياً. فكّر بها كسكين سويسري — كل واحدة بسيطة، لكنك ستفتقد أي واحدة منها عندما تحتاجها.

دوال المصفوفات ذات صلة:Array.isArray() Number.isNaN() Math.trunc parseFloat Number() toString parseInt toFixed typeof array

1. دوال الأدوات الأساسية

تحليل الأرقام من بداية السلسلة، والتوقف عند أول حرف غير رقمي:

HTML
<script>
console.log(parseInt("42px"));      // 42
console.log(parseInt("3.14"));      // 3 (الجزء الصحيح فقط)
console.log(parseFloat("3.14"));    // 3.14
console.log(parseFloat("3.14abc")); // 3.14
console.log(parseInt("abc42"));     // NaN (لا يبدأ برقم)
</script>

المعامل الثاني لـ parseInt يحدد الأساس:

HTML
<script>
console.log(parseInt("FF", 16));  // 255 (ست عشري)
console.log(parseInt("10", 2));   // 2 (ثنائي)
</script>

مشكلة: بدون أساس، السلاسل التي تبدأ بـ 0x تُحلل كست عشرية. مرر دائماً 10 كمعامل ثاني.

(2) isNaN مقابل Number.isNaN

الطريقة السلوك
isNaN(value) convert إلى رقم أولاً، ثم يتحقق ما إذا كان NaN
Number.isNaN(value) يتحقق صارماً ما إذا كانت القيمة NaN (بدون تحويل)
HTML
<script>
console.log(isNaN("hello"));         // true (Number("hello") → NaN، ثم true)
console.log(Number.isNaN("hello"));  // false ("hello" نفسها ليست NaN)
console.log(isNaN(undefined));       // true
console.log(Number.isNaN(undefined));// false
</script>

الخلاصة: استخدم Number.isNaN() — لن يُخفي تحويل الأنواع.

(3) toFixed

يتحكم في المنازل العشرية، يُرجع سلسلة:

HTML
<script>
console.log((3.14159).toFixed(2));  // "3.14"
console.log((3.1).toFixed(4));      // "3.1000" (م padding بأصفار)
console.log((3.145).toFixed(2));    // "3.14" أو "3.15" (مشكلة دقة الفاصلة المتحولة، التقريب غير مضمون)
</script>

لاحظ أن toFixed يُرجع سلسلة — استخدم Number() لإعادتها للحسابات.

(4) toString

يconvert رقم إلى سلسلة، مع دعم اختياري للأساس:

HTML
<script>
console.log((255).toString());      // "255"
console.log((255).toString(16));    // "ff"
console.log((8).toString(2));       // "1000"
console.log((100).toString(8));     // "144"
</script>

القيم المنطقية والمصفوفات لديها أيضاً toString:

HTML
<script>
console.log(true.toString());       // "true"
console.log([1,2,3].toString());    // "1,2,3"
</script>

(5) Number.isInteger

يتحقق ما إذا كانت القيمة عدد صحيح:

HTML
<script>
console.log(Number.isInteger(5));      // true
console.log(Number.isInteger(5.0));    // true (5.0 هو فقط 5)
console.log(Number.isInteger(5.5));    // false
console.log(Number.isInteger("5"));    // false (سلسلة ليست عدداً صحيحاً)
console.log(Number.isInteger(NaN));    // false
</script>

(6) Math.trunc و Math.sign

Math.trunc ببساطة يقطع الجزء العشري (بدون تقريب):

HTML
<script>
console.log(Math.trunc(4.9));    // 4
console.log(Math.trunc(-4.9));   // -4
console.log(Math.trunc(4.1));    // 4
</script>

Math.sign يُرجع إشارة الرقم:

HTML
<script>
console.log(Math.sign(5));       // 1
console.log(Math.sign(-5));      // -1
console.log(Math.sign(0));       // 0
console.log(Math.sign(-0));      // -0
console.log(Math.sign(NaN));     // NaN
</script>

(7) قيود typeof

typeof عادةً يعمل للتحقق من النوع، لكن هناك بعض المشكلات الكلاسيكية:

HTML
<script>
console.log(typeof 42);           // "number"  ✅
console.log(typeof "hello");      // "string"  ✅
console.log(typeof true);         // "boolean" ✅
console.log(typeof undefined);    // "undefined" ✅
console.log(typeof null);         // "object"  ❌ هذا خطأ تاريخي!
console.log(typeof []);           // "object"  ❌ المصفوفات أيضاً كائنات
console.log(typeof {});           // "object"  ✅
console.log(typeof function(){}); // "function" ✅
</script>

typeof null === "object" هو "خطأ قديم" في JavaScript — موجود منذ 1995 ولا يمكن إصلاحه. استخدم value === null للتحقق من null. استخدم Array.isArray() للتحقق من المصفوفات.


▶ مثال: حاسبة الأسعار

▶ جرّب الكود

▶ مثال: أداة التحقق من المدخلات

▶ جرّب الكود

▶ مثال: typeof والتحقق من النوع

▶ جرّب الكود

دوال المصفوفات ذات صلة:Array.isArray() Number.isNaN() Math.trunc parseFloat Number() toString parseInt toFixed typeof array

❓ أسئلة شائعة

س لماذا toFixed لا يضمن التقريب؟
ج لأن الأرقام ذات الفاصلة المتحولة لا يمكن تمثيلها بدقة في النظام الثنائي. (0.1 + 0.2).toFixed(1) قد يُعطي "0.3" وقد لا يُعطي. للحصول على تقريب دقيق، استخدم Math.round(num * 100) / 100 قبل استدعاء toFixed.
س ما الفرق بين parseFloat و Number()؟
ج parseFloat("42px") يُرجع 42 (يحلل من البداية، يتوقف عند أول حرف غير رقمي)، بينما Number("42px") يُرجع NaN (يحلل السلسلة بأكملها — أي حرف غير رقمي يسبب فشل). استخدم parseFloat لاستخراج الأرقام من النص المختلط؛ استخدم Number() للتحقق الصارم.

📖 ملخص

📝 تمارين

  1. اكتب دالة parseChineseNumber(str) تحلل سلاسل مثل "3.5🦄" → 3.5، "100🦄" → 100، "🦄200" → 200 (باستخدام parseFloat). تعامل مع حالة النص العادي الذي يُرجع NaN.
  2. اكتب دالة formatMoney(amount) تستقبل رقماً وتُعيد سلسلة بفواصل الآلاف وعشرتين عشريتين، مثلاً 1234567.89 → "1,234,567.89" (تلميح: استخدم toFixed و toString مع طرق المصفوفات).
  3. اكتب دالة getType(value) ت🦄 قصور typeof: تُرجع null لـ null، تُرجع array للمصفوفات، وفي بقية الحالات تُرجع نتيجة typeof.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%