جلسه اول -  اعلان (Declaration) و مقداردهی اولیه (Initialization) متغیرها

بخش ۱: اعلان (Declaration) و مقداردهی اولیه (Initialization) متغیرها

به عنوان یک توسعه‌دهنده ارشد، شما نه تنها باید بدانید که چطور کد بنویسید، بلکه باید بدانید چرا اینگونه کد می‌نویسید. انتخاب بین var، let و const یکی از این تصمیم‌هاست.

مفاهیم کلیدی:

  1. var (منسوخ شده برای استفاده مدرن):

    • محدوده (Scope): Function-scoped (محدوده تابع). یعنی اگر داخل یک تابع تعریف شود، فقط در همان تابع قابل دسترسی است.
    • بازتعریف (Redeclaration): مجاز است. (این می‌تواند منبع خطا باشد)
    • Hoisting: متغیر به بالای Scope خود منتقل می‌شود، اما با مقدار undefined.
  2. let (انتخاب استاندارد برای متغیرهای قابل تغییر):

    • محدوده (Scope): Block-scoped (محدوده بلوک). یعنی فقط در داخل آکولاد {}ی که در آن تعریف شده (مانند حلقه‌ها، شرط‌ها، توابع) قابل دسترسی است.
    • بازتعریف (Redeclaration): در همان Scope مجاز نیست.
    • تغییر مقدار (Reassignment): مجاز است.
  3. const (انتخاب پیش‌فرض و استاندارد):

    • محدوده (Scope): Block-scoped.
    • بازتعریف (Redeclaration): مجاز نیست.
    • تغییر مقدار (Reassignment): مجاز نیست. (توجه: این به معنی “ثابت بودن” خود مقدار نیست، بلکه به معنی “ثابت بودن ارجاع” است. در ادامه با اشیا و آرایه‌ها این را دقیق‌تر بررسی می‌کنیم.)
    • مقداردهی اولیه: حتماً باید در لحظهٔ اعلان، مقداردهی شود.

نکته حرفه‌ای: یک توسعه‌دهنده ارشد همیشه سعی می‌کند حالت پیش‌فرض را const قرار دهد و تنها در صورتی که واقعاً نیاز به تغییر مقدار متغیر بود، از let استفاده می‌کند. این کار باعث کاهش خطاهای ناشی از تغییرات ناخواسته و خوانایی بیشتر کد می‌شود. از var فقط برای نگهداری کدهای قدیمی استفاده می‌کنیم.


ارزیابی بخش ۱:

سؤال ۱: تحلیل کد خروجی قطعه کد زیر چیست و دلیل آن را به زبان ساده توضیح دهید.

function testVariables() {
    if (true) {
        var nameVar = "Ali";
        let nameLet = "Reza";
        const nameConst = "Sara";
    }
    console.log(nameVar);
    console.log(nameLet);
    console.log(nameConst);
}
testVariables();

سؤال ۲: انتخاب بهترین گزینه کدام گزینه برای تعریف هر یک از موارد زیر بهترین گزینه است؟ (const یا let)

  • الف) شمارنده یک حلقه (Loop Counter)
  • ب) مقدار PI (عدد ثابت ریاضی)
  • ج) یک شیء (Object) که قرار است خصوصیات آن در طول برنامه تغییر کند.
  • د) یک آرایه (Array) که قرار است عناصر جدیدی به آن اضافه شود.