ویرگول
ورودثبت نام
علی پالوانه
علی پالوانه
خواندن ۲ دقیقه·۱ سال پیش

تغییر مقدار const در جاوا اسکریپت

مقدار const توی جاوا اسکریپت میتونه تغییر کنه؟

سوالی که خیلی توی مصاحبه های کاری ممکنه پرسیده بشه اینه که تفاوت var, let, const چیه؟ و خب همون جوابای همیشگی که شما بهتر از من بلدین رو میدین بهشون و تمومه!

اما سوال دومی که مطرح میشه اینه:

مقدار const توی آبجکت میتونه تغییر کنه یا نه؟

بله! مقادیر properties و همچنین متدها میتونن توی آبجکتی که با const تعریف شده تغییر کنن

اما خب بریم توضیحش بدیم که یعنی چی اصلا

وقتی با مفهوم const توی یادگیری جاوا اسکریپت آشنا شدین بهتون گفته شده وقتی با const مقداری رو تعریف می‌کنین قابل تغییر نیست و یک بار تعریف میشه و نمی‌تونین دوباره به اون مقدار جدیدی رو بدین

مثلا کد زیر:

const age = 32 console.log(age) //32 age = 25 //Error : Cannot assign to &quotage&quot because it is a constant const age = 45 //Error : Cannot assign to &quotage&quot 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 رو تغییر میدی و با تغییر value باید عرض کنم که رفرنس اصلی هیچ تغییر نمیکنه!

امیدوارم تونسته باشم درست برسونم

اگر هم خوب توضیح ندادم می‌تونین خیلی کوتاه و مختصر به این لینک هم سر بزنین :
https://usefulangle.com/post/342/javascript-const-object-change-property

جاوا اسکریپتبرنامه نویسیجاوااسکریپتکدنویسیمتغیر
که آفتاب بیاید...
شاید از این پست‌ها خوشتان بیاید