تصحيح أخطاء JavaScript: من الكونسول إلى محلل الأداء — دليل شامل لمن لا يخافون من الأخطاء
\n\nهل سبق لك أن كتبت كود JavaScript، وشغّلته، فلم تحصل على أي رد؟ أو الأسوأ من ذلك، أن الكونسول امتلأ بالأخطاء الحمراء وأنت تنظر إلى الشاشة وكأنها كتابة هيروغليفية؟ يبدو مألوفاً؟ إذن هذه المقالة هي طوق نجاتك.
\n\nتصحيح أخطاء كود JavaScript ليس مجرد البحث عن أخطاء إملائية. إنه فن فهم كيف يعيش كودك، وكيف يتنفس، وكيف يتعطل. وكأي محقق حقيقي، يجب أن تتعلم جمع الأدلة، واستجواب الشهود (المتغيرات)، والقبض على المجرم (الخطأ) متلبساً.
\n\nفي هذه المقالة، سنستعرض تقنيات تصحيح أخطاء JS التي ستحولك من مطور يخمن إلى محقق شيرلوك هولمز حقيقي. وأعدك، سيكون عملياً دون نظرية مملة.
\n\nلماذا تصحيح أخطاء JavaScript ليس ألماً بل قوة خارقة؟
\n\nلنكن صادقين: الأخطاء كانت وستظل موجودة. الفرق بين المبتدئ والمحترف ليس في أن المحترف لا يكتب أخطاء، بل في مدى سرعته في إيجادها وإصلاحها. أدوات تصحيح الأخطاء في JavaScript هي ترسانتك الشخصية. كلما أتقنت استخدامها، كلما أسرعت في إصلاح الكود.
\n\nلكن هناك فارق بسيط: JavaScript لغة غير متزامنة، تعتمد على الأحداث، وأحياناً غير متوقعة. الأخطاء يمكن أن تظهر في أي مكان وفي أي وقت. لذلك، تصحيح الأكواد البرمجية يتطلب نهجاً منظماً وأدوات صحيحة.
\n\n1. Console.log: صديقك الأول وعدوك الأكبر
\n\nلنبدأ بالأسهل والأكثر توفراً — console.log(). هذه الطريقة مألوفة لكل من كتب JavaScript ولو مرة واحدة. لكن هل تعلم أنه يمكنك استخدامها بشكل أكثر فعالية؟
تقنيات بسيطة لكنها قوية مع console
\n\nبدلاً من كتابة console.log(value)، جرب:
const user = { name: 'آنا', age: 28, role: 'admin' };\nconsole.log('كائن المستخدم:', user);\n// أو استخدم التنسيقات\nconsole.log('%cرسالة مهمة', 'color: red; font-size: 20px; font-weight: bold');\n\nوهناك أيضاً console.table() — إنه سحري للمصفوفات التي تحتوي على كائنات:
const users = [\n { name: 'أحمد', age: 25 },\n { name: 'مريم', age: 32 },\n { name: 'بيتر', age: 19 }\n];\nconsole.table(users);\n\nسيقوم هذا بعرض البيانات في جدول جميل. مفيد جداً عندما تحتاج لتقييم بنية البيانات بسرعة.
\n\nالتجميع والعد
\n\nعندما يكون الكود كثيراً والسجلات أكثر، استخدم console.group():
console.group('معالجة المستخدمين');\nconsole.log('الخطوة 1: التحقق');\nconsole.log('الخطوة 2: الحفظ');\nconsole.log('الخطوة 3: إرسال البريد الإلكتروني');\nconsole.groupEnd();\n\nأما console.count() فسيساعدك على معرفة عدد مرات تنفيذ الدالة:
function handleClick() {\n console.count('نقرة');\n}\n// عند كل نقرة سيظهر: نقرة: 1, نقرة: 2, ...\n\nهام: لا تفرط في استخدام console.log في بيئة الإنتاج. احذف دائماً أدوات التسجيل قبل النشر أو استخدم علامات التصحيح.
2. Debugger: نقطة الدخول إلى عالم التصحيح
\n\nإذا كان console.log هو الاستطلاع، فإن debugger هو الاقتحام الكامل للكود. ضع السطر debugger; في المكان المناسب، وسيتوقف التنفيذ هناك تماماً.
function calculateDiscount(price, discount) {\n debugger; // سيتوقف التنفيذ هنا\n const result = price - (price * discount / 100);\n return result;\n}\n\ncalculateDiscount(1000, 15);\n\nعندما يواجه المتصفح debugger، سيفتح أدوات المطور (إذا كانت مغلقة) ويعرض لك الحالة الحالية لجميع المتغيرات، ومكدس الاستدعاءات، والنطاق. هذا مثل إيقاف الفيلم مؤقتاً — يمكنك فحص كل إطار.
كيف يعمل هذا عملياً
\n\n- \n
- تضع
debugger;في الموقع المتوقع للخطأ \n - تشغل الكود \n
- في لوحة DevTools المفتوحة، يمكنك فحص كل شيء \n