یکی از مفاهیم مهم جاوااسکریپت، Reference Type است. 🚀
❓ کد:
let a = [1, 2, 3];
let b = a;
b.push(4);
console.log(a.length);
✅ جواب: 4
### چرا؟
خیلیها فکر میکنند:
let b = a;
یک کپی از آرایه میسازد؛ اما اینطور نیست. ❌
در جاوااسکریپت، Array و Object از نوع Reference Type هستند؛ یعنی فقط آدرس (Reference) آنها کپی میشود، نه خود داده.
بنابراین
a و b هر دو به یک آرایه اشاره میکنند. پس وقتی مینویسیم:b.push(4);
در واقع همان آرایه اصلی تغییر میکند و خروجی:
console.log(a.length); // 4
خواهد بود.
### اگر کپی واقعی بخواهیم:
let b = [...a];
// یا
let b = a.slice();
در این حالت تغییرات
b روی a تأثیری ندارد.📌 خلاصه:
✅
string، number و boolean با مقدار کپی میشوند.⚠️
Array و Object با Reference (آدرس حافظه) کپی میشوند.پس:
let b = a;
یعنی هر دو متغیر به یک داده اشاره میکنند، نه اینکه یک کپی جدید ساخته شود.
ممنون که وقت گذاشتی و خوندی ش ❤️
✦ @programming_codiing