جلسه پایانی فصل اول

بررسی پاسخ‌های بخش ۸:

**پاسخ ۱:

  • کد واقعاً اجرا می‌شود و خطایی نمی‌دهد، اما رفتار نادرست دارد
  • multiply(5, "2")5 * "2"10 (رشته “2” به عدد تبدیل می‌شود)
  • اما اگر multiply(5, "hello") باشد: 5 * "hello"NaN
  • مشکل: تابع ورودی‌های نادرست را تشخیص نمی‌دهد

دیباگینگ با console.log:

function multiply(a, b) {
    console.log("نوع a:", typeof a, "مقدار:", a); // 🔍
    console.log("نوع b:", typeof b, "مقدار:", b); // 🔍
    let result = a * b;
    console.log("نتیجه:", result, "نوع:", typeof result); // 🔍
    return result;
}
 
let total = multiply(5, "2");
console.log(total);

**پاسخ ۲:

  • debugger را قبل از شرط می‌گذاریم
  • سپس در DevTools می‌توانیم مقادیر را بررسی کنیم

کد بهبود یافته:

function checkAge(age) {
    debugger; // ❗توقف در اینجا
    console.log("سن ورودی:", age, "نوع:", typeof age); // 🔍
    if (age >= 18) {
        return "بزرگسال";
    } else {
        return "خردسال";
    }
}
 
let status = checkAge(20);

**پاسخ ۳:

  • خطا: TypeError (نه ReferenceError)
  • دلیل: undefined.name → نمی‌توان propertyای از undefined خواند
  • call stack: calculateprocessstart

خروجی خطا:

TypeError: Cannot read properties of undefined (reading 'name')
    at calculate (فایل:خط)
    at process (فایل:خط)  
    at start (فایل:خط)

خلاصه نکات مهم دیباگینگ:

  1. انواع خطاها:

    • ReferenceError: متغیر تعریف نشده
    • TypeError: عملیات روی نوع نادرست
    • SyntaxError: خطای دستوری
    • RangeError: عدد خارج از محدوده
  2. ابزارهای دیباگ:

    • console.log(): برای دنبال کردن مقادیر
    • debugger: برای توقف برنامه‌ریزی شده
    • console.trace(): برای نمایش call stack
    • Breakpoints در DevTools: برای دیباگ پیشرفته
  3. best practiceها:

    • همیشه نوع داده‌ها را چک کن
    • از ورودی‌های کاربر اعتبارسنجی کن
    • خطاها را به دقت بخوان (مخصوصاً نوع خطا)

🎉 تبریک! فصل اول دوره مبانی جاوااسکریپت به پایان رسید!

خلاصه آنچه یاد گرفتی:

  • ✅ سینتکس پایه و ساختار لغوی
  • ✅ متغیرها (var, let, const) و scope
  • ✅ انواع داده (رشته، عدد، بولین)
  • ✅ عملگرها (حساب، مقایسه، منطق)
  • ✅ کنترل جریان (if, else, switch)
  • ✅ حلقه‌ها (for, while, do…while)
  • ✅ مدیریت خطا (try, catch, finally)
  • ✅ دیباگینگ (console.log, debugger, breakpoints)

قدم بعدی: حالا می‌توانی با اطمینان کدهای جاوااسکریپت بنویسی، خطاهایش را تشخیص بدی و رفع کنی. برای تمرین بیشتر، سعی کن پروژه‌های کوچک مثل ماشین حساب یا برنامه مدیریت لیست بسازی.