جلسه ۲ - متغیرها - خانه‌های اطلاعات ما

بخش ۲: متغیرها - خانه‌های اطلاعات ما

۱. تعریف متغیر با var (روش قدیمی)

var name = "سامان";
  • محدوده: فقط داخل تابعی که تعریف شده قابل دسترسی است
  • مشکل: اگر داخل if یا for تعریف شود، بیرون از آن هم قابل دسترسی است (ایجاد باگ می‌کند)
let age = 25;
  • محدوده: فقط داخل بلاک {} که تعریف شده
  • امن‌تر: جلوگیری از خطاهای ناخواسته

۳. تعریف متغیر با const (مقدار ثابت)

const PI = 3.14;
  • ویژگی: مقدار آن قابل تغییر نیست
  • توجه: اگر const یک شیء یا آرایه باشد، محتوای داخل آن قابل تغییر است، فقط نمی‌توانیم متغیر جدیدی به آن نسبت دهیم

۴. Hoisting (بالا آوردن) - مفهوم مهم!

جاوااسکریپت قبل از اجرای کد، همه تعریف‌های var را به بالا می‌برد:

console.log(x); // undefined (خطا نمی‌دهد!)
var x = 5;
console.log(x); // 5

اما با let و const اینطور نیست:

console.log(y); // ❌ خطا می‌دهد
let y = 10;

۵. محدوده (Scope) - کجا قابل دیدن است؟

// مثال با var (خطرناک)
if (true) {
    var color = "قرمز";
}
console.log(color); // "قرمز" (با وجودی که بیرون if است!)
 
// مثال با let (ایمن)
if (true) {
    let size = "بزرگ";
}
console.log(size); // ❌ خطا: size is not defined

سؤالات تمرینی بخش ۲:

۱. خروجی کد زیر چیست؟ چرا؟

console.log(number);
var number = 10;

۲. کدام خطا می‌دهد؟ چرا؟

const colors = ["قرمز", "آبی"];
colors.push("سبز"); // خط اول
colors = ["زرد"];   // خط دوم

۳. تفاوت let و const چیست؟ یک مثال برای هرکدام بزن.