ویرگول
ورودثبت نام
میثم قیصری | maysam ghaysari
میثم قیصری | maysam ghaysariبرنامه نویس
میثم قیصری | maysam ghaysari
میثم قیصری | maysam ghaysari
خواندن ۱ دقیقه·۳ روز پیش

تفاوت var ، let و const چیست؟

🔥 یکی از سوالات کلاسیک مصاحبه‌های جاوااسکریپت

تفاوت var ، let و const چیست؟

let , var , const | میثم قیصری | maysam ghaysari
let , var , const | میثم قیصری | maysam ghaysari

راستش اولش فکر می‌کردم سوال ساده‌ست، ولی مصاحبه‌گر دقیقاً می‌خواست ببینه من هنوز با 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 (تغییر آن) ممنوع)

مصاحبهفرانت‌اندfront endبرنامه‌نویسیجاوا اسکریپت
۲
۰
میثم قیصری | maysam ghaysari
میثم قیصری | maysam ghaysari
برنامه نویس
شاید از این پست‌ها خوشتان بیاید