سوالی که خیلی توی مصاحبه های کاری ممکنه پرسیده بشه اینه که تفاوت var, let, const چیه؟ و خب همون جوابای همیشگی که شما بهتر از من بلدین رو میدین بهشون و تمومه!
اما سوال دومی که مطرح میشه اینه:
بله! مقادیر properties و همچنین متدها میتونن توی آبجکتی که با const تعریف شده تغییر کنن
اما خب بریم توضیحش بدیم که یعنی چی اصلا
وقتی با مفهوم const توی یادگیری جاوا اسکریپت آشنا شدین بهتون گفته شده وقتی با const مقداری رو تعریف میکنین قابل تغییر نیست و یک بار تعریف میشه و نمیتونین دوباره به اون مقدار جدیدی رو بدین
مثلا کد زیر:
const age = 32 console.log(age) //32 age = 25 //Error : Cannot assign to "age" because it is a constant const age = 45 //Error : Cannot assign to "age" because it is a constant
گرفتی چی شد؟ ما یکبار متغیر age رو تعریف کردیم و برابر 32 گذاشتیم
دیگه نمیتونیم باز بیایم یه const با همون اسم بسازیم یا اصلا همون متغیر رو یه مقدار جدید بهش بدیم!
خب بحث const رو تو حالت گلوبال میبندیم ?
اما توی آبجکت بریم بررسیش کنیم
همون جوابی که اول گفتیم :
مقادیر properties و همچنین متدها میتونن توی آبجکتی که با const تعریف شده تغییر کنن
const person = { name: 'ali', age: 32 } console.log(person.age) // 32 person.age = 45 console.log(person.age) // 45
توی مثال بالا ما یه ثابتی (const) به اسم person ساختیم که property های اون name, age هستن
ما age property رو برابر 32 گذاشتیم و وقتی لاگ گرفتیم خروجی 32 شد
اما وقتی مقدارش رو تغییر دادیم به 45 دیدیم که دوباره لاگ گرفتیم این بار 45 شد
پس نتیجه میگیریم که توی آبجکت ها میشه value یا همون مقادیر properties و methods رو تغییر داد
اما یادتون نره شما بازم اجازه ندارین یه const دیگه به اسم person بسازید
هر متغیری که تعریف میکنی توی آبجکت یه رفرنسی داره که اون توی حافظه ذخیره میشه نه مقدار value
تو هم رفرنس رو نمیخوای عوض کنی و فقط داری مقدار value رو تغییر میدی و با تغییر value باید عرض کنم که رفرنس اصلی هیچ تغییر نمیکنه!
امیدوارم تونسته باشم درست برسونم
اگر هم خوب توضیح ندادم میتونین خیلی کوتاه و مختصر به این لینک هم سر بزنین :
https://usefulangle.com/post/342/javascript-const-object-change-property