جلسه ۴ - پاسخ پرسشها و جمع بندی

تحلیل پاسخ‌ها:

سؤال ۱: پیش‌بینی خروجی

بیایید تحلیل مفهومی را دقیق‌تر بررسی کنیم:

let x = 5;        // مقدار اولیه
let y = x;        // ایجاد کپی مستقل از مقدار
y = 10;           // تغییر فقط روی متغیر y اثر می‌گذارد
 
let array1 = [1, 2, 3];  // ایجاد آرایه و ذخیره ارجاع در array1
let array2 = array1;     // کپی کردن ارجاع (نه محتوا) - هر دو به یک آرایه اشاره می‌کنند
array2.push(4);          // تغییر محتوای آرایه مشترک
 
console.log(x);       // 5 ✅ (مقدار اولیه بدون تغییر)
console.log(y);       // 10 ✅ (کپی مستقل)
console.log(array1);  // [1,2,3,4] ✅ (تغییر از طریق ارجاع مشترک)
console.log(array2);  // [1,2,3,4] ✅ (هر دو به یک آرایه اشاره می‌کنند)

نکته کلیدی: این مثال به خوبی نشان می‌دهد که چرا درک تفاوت بین انواع داده اولیه و ارجاعی اینقدر مهم است. وقتی با اشیا و آرایه‌ها کار می‌کنید، باید همیشه به “ارجاع مشترک” توجه داشته باشید.


سؤال ۲: تشخیص نوع داده

  • الف) let age = 30;کپی مستقل ✅ (نوع داده اولیه: Number)
  • ب) let user = { id: 1, name: "Sara" };ارجاع مشترک ✅ (نوع داده ارجاعی: Object)
  • ج) let isActive = true;کپی مستقل ✅ (نوع داده اولیه: Boolean)
  • د) let scores = [10, 20, 30];ارجاع مشترک ✅ (نوع داده ارجاعی: Array)

نکته حرفه‌ای: یک توسعه‌دهنده ارشد همیشه هنگام کار با انواع ارجاعی، از تکنیک‌هایی مانند spread operator (...) یا Object.assign() برای ایجاد کپی واقعی (shallow copy) استفاده می‌کند تا از تغییرات ناخواسته جلوگیری شود.

// ایجاد کپی واقعی از آرایه
let array1 = [1, 2, 3];
let array2 = [...array1]; // ایجاد کپی جدید
array2.push(4);
 
console.log(array1); // [1,2,3] ✅ (بدون تغییر)
console.log(array2); // [1,2,3,4] ✅

جمع‌بندی نهایی بخش ۲:

شما به خوبی تفاوت اساسی بین انواع داده اولیه و ارجاعی را درک کرده‌اید. این درک، پایه و اساس کار با ساختارهای پیچیده‌تر داده در جاوااسکریپت است.