JavaScript: طرق الأدوات المساعدة في JavaScript
آخر تحديث: 2026-10-13
غطينا تحويلات الأنواع — الآن لنتعلم مجموعة من طرق الأدوات المساعدة التي ستستخدمها يومياً. فكّر بها كسكين سويسري — كل واحدة بسيطة، لكنك ستفتقد أي واحدة منها عندما تحتاجها.
1. دوال الأدوات الأساسية
تحليل الأرقام من بداية السلسلة، والتوقف عند أول حرف غير رقمي:
<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 يحدد الأساس:
<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 (بدون تحويل) |
<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
يتحكم في المنازل العشرية، يُرجع سلسلة:
<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 رقم إلى سلسلة، مع دعم اختياري للأساس:
<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:
<script>
console.log(true.toString()); // "true"
console.log([1,2,3].toString()); // "1,2,3"
</script>
(5) Number.isInteger
يتحقق ما إذا كانت القيمة عدد صحيح:
<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 ببساطة يقطع الجزء العشري (بدون تقريب):
<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 يُرجع إشارة الرقم:
<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 عادةً يعمل للتحقق من النوع، لكن هناك بعض المشكلات الكلاسيكية:
<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 والتحقق من النوع
▶ جرّب الكود❓ أسئلة شائعة
toFixed لا يضمن التقريب؟(0.1 + 0.2).toFixed(1) قد يُعطي "0.3" وقد لا يُعطي. للحصول على تقريب دقيق، استخدم Math.round(num * 100) / 100 قبل استدعاء toFixed.parseFloat("42px") يُرجع 42 (يحلل من البداية، يتوقف عند أول حرف غير رقمي)، بينما Number("42px") يُرجع NaN (يحلل السلسلة بأكملها — أي حرف غير رقمي يسبب فشل). استخدم parseFloat لاستخراج الأرقام من النص المختلط؛ استخدم Number() للتحقق الصارم.📖 ملخص
parseInt(str, radix)لتحليل الأعداد الصحيحة؛ حدد الأساس للسلامة.parseFloat(str)للأعداد العشريةisNaN(value)يتحقق من NaN —NaN === NaNيساوي false، استخدمNumber.isNaNللتحقق الدقيق- التحويل الصريح:
Number(value)،String(value)،Boolean(value)أكثر أماناً num.toFixed(digits)يُرجع سلسلة بعدد محدد من المنازل العشرية، ممتاز لعرض العملات- التحقق من النوع:
typeofللأنواع البدائية،Array.isArray()للمصفوفات،Object.prototype.toString.call()للفحص الدقيق
📝 تمارين
- اكتب دالة
parseChineseNumber(str)تحلل سلاسل مثل"3.5🦄"→3.5،"100🦄"→100،"🦄200"→200(باستخدامparseFloat). تعامل مع حالة النص العادي الذي يُرجعNaN. - اكتب دالة
formatMoney(amount)تستقبل رقماً وتُعيد سلسلة بفواصل الآلاف وعشرتين عشريتين، مثلاً1234567.89→"1,234,567.89"(تلميح: استخدمtoFixedوtoStringمع طرق المصفوفات). - اكتب دالة
getType(value)ت🦄 قصورtypeof: تُرجعnullلـnull، تُرجعarrayللمصفوفات، وفي بقية الحالات تُرجع نتيجةtypeof.