
تحلیل پاسخها:
سؤال ۱: پیشبینی خروجی
بیایید تحلیل مفهومی را دقیقتر بررسی کنیم:
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] ✅جمعبندی نهایی بخش ۲:
شما به خوبی تفاوت اساسی بین انواع داده اولیه و ارجاعی را درک کردهاید. این درک، پایه و اساس کار با ساختارهای پیچیدهتر داده در جاوااسکریپت است.