تفاوت var، let و const در جاوااسکریپت

در زبان جاوااسکریپت، برای تعریف متغیرها از سه کلمه کلیدی var، let و const استفاده می‌شود. درک دقیق تفاوت‌های این سه، یکی از مفاهیم بنیادین در برنامه‌نویسی مدرن جاوااسکریپت است. زیرا استفاده نادرست از آن‌ها می‌تواند منجر به خطاهای ناخواسته و مشکلات نگهداری کد شود.

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

جاوااسکریپت

تفاوت‌های مهم

برای شروع، به جدول زیر توجه کنید. مهم‌ترین تفاوت‌های این دستورات را مشاهده می‌کنید.

ویژگی var let const
محدوده (Scope) تابعی (Function Scope) یا سراسری بلوکی (Block Scope) بلوکی (Block Scope)
بالا بردن (Hoisting) بله (با مقدار اولیه undefined) بله، اما دسترسی پیش از تعریف ممنوع (Temporal Dead Zone) همانند let
تعریف مجدد مجاز ممنوع ممنوع
تغییر مقدار مجاز مجاز ممنوع (فقط مقدار اولیه)
نیاز به مقدار اولیه اختیاری (در صورت عدم تخصیص: undefined) اختیاری، اما پیش از استفاده باید تعریف شود الزامی

جزئیات کارکرد let، var و const

۱- var – روش قدیمی تعریف متغیر

var از نسخه‌های اولیه جاوااسکریپت وجود داشته و امروزه استفاده از آن توصیه نمی‌شود. محدوده آن تابعی است، یعنی متغیر تعریف‌شده با var در کل تابع (یا در سطح سراسری) قابل دسترسی است، حتی اگر داخل یک بلوک {} تعریف شده باشد.

استفاده از var این مشکل را دارد که در حلقه‌ها، تمام تکرارها به یک متغیر مشترک دسترسی دارند و می‌تواند باعث خطا شود.

۲- let – تعریف متغیر قابل تغییر با محدوده بلوکی

let در استاندارد ES6 معرفی شد و برای متغیرهایی که مقدارشان ممکن است تغییر کند، مناسب است. محدوده آن بلوکی است و پیش از خط تعریف، دسترسی به آن خطای ReferenceError تولید می‌کند.
مثال:

رفتار در حلقه‌ها

استفاده از let به جای var در حلقه‌ها این مزیت را دارد که متغیر تعریف شده تنها در این ناحیه قابل استفاده است و بازنویسی محتوای آن باعث تغییر متغیرهای هم‌نام بیرون از ناحیه‌ی حلقه نمی‌شود. این روش می‌تواند خطاهای احتمالی را از بین ببرد.

۳- const – تعریف مقدار ثابت با محدوده بلوکی

const نیز مثل let محدوده بلوکی دارد، اما مقدار تخصیص‌یافته به آن قابل تغییر نیست. این کلمه کلیدی برای مقادیر ثابت که نباید تغییر کنند، بسیار مناسب است.
مثال:

نکته مهم در مورد آرایه‌ها و اشیا

هنگامی که از const برای تعریف اشیا استفاده می‌کنید، تغییر کل شیء امکان‌پذیر نیست ولی همچنان می‌توانید اعضای شیء را تغییر بدهید.

نکات پیشرفته و خطاهای متداول

  • برای let و const، حتی با وجود hoisting، دسترسی پیش از تعریف خطای ReferenceError می‌دهد:

  • افزودن 'use strict'; در ابتدای فایل یا تابع، خطاهای مرتبط با var را زودتر آشکار می‌کند.
  • در پروژه‌های جدید بهتر است از var استفاده نکنید. ابتدا const را امتحان کنید. اگر نیاز به تغییر مقدار بود، از let استفاده کنید.
  • در برنامه‌ای برای رزرو بلیت سینما، از const برای قیمت پایه بلیت و از let برای تعداد صندلی‌های انتخاب‌شده استفاده کنید.

یادگیری بهتر عملکردها و تفاوت‌ها

برای اینکه بهتر بتوانید با عملکردهای این سه کلمه‌ی کلیدی آشنا شوید، پیشنهاد می‌شود در تمرین‌های خود از let و const استفاده کنید. برای آزمایش مثال‌ها، از کنسول مرورگر (با فشار F12) استفاده کنید. هرچه بیشتر تمرین کنید، تسلط و مهارت شما در برنامه‌نویسی افزایش پیدا می‌کند و در زمان نوشتن یک پروژه‌ی واقعی، اشتباهات کمتری خواهید داشت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *