🔥 یکی از سوالات کلاسیک مصاحبههای جاوااسکریپت
تفاوت var ، let و const چیست؟

راستش اولش فکر میکردم سوال سادهست، ولی مصاحبهگر دقیقاً میخواست ببینه من هنوز با var کد مینویسم. و سطح درک من از Scope، Hoisting و Temporal Dead Zone را بسنجد
برای اینکه دیگه هیچوقت سردرگم نشی، اول چند مفهوم پایه رو برات توضیح میدم :
ا- Scope (محدوده متغیر): یعنی این متغیر کجا زندهست و میتونی ببینیش؟
ا- Function-scoped: کل تابع (حتی اگه داخل if یا for تعریفش کرده باشی، بیرونش هم در دسترسه)
ا- Block-scoped: فقط داخل همون بلوک {} (مثل داخل if، for، while)
ا- Hoisting (بالا کشیدن): جاوااسکریپت قبل از اجرا، همه declare متغیرها رو automatically به بالای scope میبره.
ا- Temporal Dead Zone (TDZ - منطقه مرگ موقتی): فقط برای let و const. حتی اگه hoisted بشن، تا به خط تعریف نرسی اگه سعی کنی بخونیشون ارور میده.
("دوباره declare کردن" یعنی دوباره با همون اسم تعریف کردن (var اجازه میده، let و const ارور میده)).
حالا با همین مفاهیم ساده، تفاوتها رو ببین:
var
Function-scoped
Hoisted (و مقدار اولیه undefined میگیره)
میتونی دوباره declare کنی و مقدارش رو عوض کنی
-----------------------------------------------------------
let
Block-scoped
Hoisted هست ولی TDZ داره
نمیتونی تو همون scope دوباره declare کنی
ولی میتونی مقدارش رو تغییر بدی
-----------------------------------------------------------
const
Block-scoped + TDZ
دقیقاً مثل let، ولی نمیتونی reference رو عوض کنی
JavaScript #JS #VarLetConst #ES6 #Hoisting #Scope #BlockScope #TemporalDeadZone #Programming #WebDevelopment #FrontendDevelopment #Coding #InterviewQuestions #CodingInterview #JavaScriptDeveloper #LearnJavaScript #CleanCode #WebDev #SoftwareEngineer #FrontendEngineer #FullStack #100DaysOfCode #DeveloperLife #TechCareer #React #NodeJS #TypeScript #ECMAScript فرانت جاوا اسكرييت #مصاحبه برنامه ## Code Quality #JobInterview# #ریکت
(یعنیتغییر ممنوعreassignment (تغییر آن) ممنوع)