منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
CODEX/سطح ۱؛ خطا و عیب‌یابیjavascriptDebugging and console

عیب‌یابی و کنسول در جاوااسکریپت

عیب‌یابی جاوااسکریپت را با مشاهدهٔ ورودی و مقدار میانی تمرین کنید؛ کاربرد console.log، محل خطا و breakpoint را در مثال جمع قیمت‌ها بشناسید.

مفهوم به زبان ساده

عیب‌یابی یعنی پیدا کردن علت تفاوت رفتار واقعی برنامه با انتظار مشخص. نخست باید بدانید خروجی مورد انتظار چیست؛ سپس مرحله‌ای را پیدا کنید که مقدار از انتظار دور شده است. کنسول برای دیدن خطا و چاپ مقدارها مفید است. چاپ بیشتر همیشه پاسخ بهتر نیست؛ هر پیام باید یک پرسش معین دربارهٔ جریان داده را جواب بدهد.

در مثال، پیش از افزودن هر قیمت، مجموع فعلی را چاپ می‌کنیم. از روی دو پیام می‌توان دید مقدار صفر چگونه به ۲۰۰۰۰ می‌رسد و نتیجهٔ نهایی چگونه ۵۰۰۰۰ می‌شود. اگر یکی از قیمت‌ها متن باشد، همین مشاهده می‌تواند رفتار چسباندن متن را آشکار کند. این روش جای بررسی نوع و قرارداد ورودی را نمی‌گیرد؛ فقط یافتن مسیر مشکل را آسان می‌کند.

در ابزار توسعهٔ مرورگر، breakpoint امکان توقف روی یک خط و بررسی مقدارها و پشتهٔ فراخوانی را می‌دهد. نخستین محل مرتبط خطا و ورودی را دنبال کنید، نه فقط آخرین پیام را. برخی نمایش‌های کنسول برای شیء، وضعیت بعدی آن را هم هنگام بازکردن نشان می‌دهند؛ برای مقایسهٔ دقیق، مقدارهای ساده یا تصویر متنی مناسب ثبت کنید. رمز، توکن و دادهٔ شخصی واقعی را برای عیب‌یابی بی‌دلیل چاپ نکنید.

کجا به کار می‌آید؟

  • ردگیری ورودی، مقدار میانی و نتیجه در یک محاسبه
  • پیداکردن اولین مرحلهٔ ناهماهنگ با انتظار نوشته‌شده

از تعریف تا یک مثال واقعی

javascript
function total(prices) {
  let result = 0;
  for (const price of prices) {
    console.log('before ' + result);
    result += price;
  }
  return result;
}
console.log('total ' + total([20000, 30000]));
خروجی مورد انتظار
before 0
before 20000
total 50000
کد را تغییر دهید و نتیجه را ببینید.

این مثال چطور کار می‌کند؟

  1. مجموع با صفر شروع می‌شود و پیام نخست آن را نشان می‌دهد.

  2. پس از افزودن قیمت اول، پیام دور دوم مقدار ۲۰۰۰۰ را نشان می‌دهد.

  3. قیمت دوم افزوده می‌شود و نتیجهٔ نهایی ۵۰۰۰۰ چاپ می‌شود.

اشتباه رایج

پاک‌کردن پیام خطا یا اضافه‌کردن catch خالی، اصلاح علت نیست. همچنین خروجی console.log نتیجهٔ برگردانده‌شدهٔ تابع را جایگزین نمی‌کند.

این را به خاطر بسپارید

قبل از اصلاح، انتظار و ورودی را مشخص کنید؛ سپس اولین محل اختلاف را با مشاهدهٔ هدفمند پیدا کنید.

بازگشت به نقشهٔ مفاهیم
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان