MATIN MOLKARA
SERIES: JavaScript — PART 2 OF 108

3- آموزش جاوااسکریپت | متغیرها و نحوه تعریف آن‌ها (var, let, const)

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

مقدمه و کلمات کلیدی تعریف متغیر

در این بخش قصد داریم درباره متغیرها و نحوه تعریف (Declaration) آن‌ها صحبت کنیم. در جاوااسکریپت سه کلمه کلیدی برای تعریف متغیر وجود دارد:

  1. var: که از ابتدای پیدایش جاوااسکریپت وجود داشته است.
  2. let: که در سال ۲۰۱۵ (استاندارد ES6) معرفی شد.
  3. const: که این هم در استاندارد ES6 معرفی گردید.

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

نکته درباره Scope: متغیرهای let و const مزیت بزرگی در زمینه "Block Level Scope" دارند. اما من در این بخش وارد جزئیات آن نمی‌شوم؛ چون تا زمانی که با توابع و بلوک‌های کد آشنا نشده باشید، صحبت از Scope (قلمرو) منطقی نیست. در پایان این بخش آموزشی به‌طور کامل به این موضوع خواهیم پرداخت.


کار با متغیر var

بیایید با یک مثال ساده از var شروع کنیم:

var name = 'John Doe';
console.log(name); // خروجی: John Doe

ما می‌توانیم متغیرهایی که با var تعریف شده‌اند را دوباره مقداردهی (Reassign) کنیم:

name = 'Steve Smith';
console.log(name); // خروجی: Steve Smith

مقداردهی اولیه (Initialization)

شما می‌توانید یک متغیر را تعریف کنید بدون اینکه مقدار خاصی به آن بدهید:

var greeting;
console.log(greeting); // خروجی: undefined

در این حالت مقدار آن به‌صورت پیش‌فرض undefined خواهد بود. بعداً می‌توانید در طول برنامه (مثلاً بر اساس یک شرط خاص) به آن مقدار بدهید:

greeting = 'Hello';
console.log(greeting); // خروجی: Hello

قوانین و قراردادهای نام‌گذاری متغیرها

نام متغیرها در جاوااسکریپت فقط می‌تواند شامل این موارد باشد:

  • حروف (Letters)
  • اعداد (Numbers)
  • علامت آندرلاین (_)
  • علامت دلار ($)

قانون مهم: نام متغیر نمی‌تواند با عدد شروع شود.

  • var 1name; خطا ایجاد می‌کند (Syntax Error).
  • var name1; صحیح است.

قراردادهای نام‌گذاری برای متغیرهای چندکلمه‌ای:

  1. Camel Case: (پیشنهادی ما) مانند firstName. در این روش کلمه اول با حروف کوچک و کلمات بعدی حرف اول آنها با حروف بزرگ شروع می‌شوند.
  2. Underscore: مانند first_name. (بیشتر در PHP رایج است).
  3. Pascal Case: مانند FirstName. (معمولاً برای کلاس‌ها و توابع سازنده استفاده می‌شود).

تفاوت let و const

کلمه کلیدی let از نظر عملکرد بسیار شبیه به var است (در سطح گلوبال)، اما تفاوت اصلی در همان بحث Scope است که بعداً می‌بینیم.

اما const مخفف Constant به معنای "ثابت" است.

  1. نمی‌توان آن را دوباره مقداردهی کرد:
    const name = 'John';
    name = 'Sara'; // خطا: Assignment to constant variable
    
  2. حتماً باید هنگام تعریف، مقداردهی شود:
    const greeting; // خطا: Missing initializer in const declaration
    

استفاده از const با آرایه‌ها و آبجکت‌ها

بسیاری از افراد تازه کار در اینجا دچار سردرگمی می‌شوند. وقتی از const برای انواع داده‌های غیرابتدایی (مثل Object و Array) استفاده می‌کنید، به این معنا نیست که محتوای آن‌ها غیرقابل تغییر است.

مثال در آبجکت:

const person = {
  name: 'John',
  age: 30
};

person.name = 'Sara'; // این کار مجاز است!
person.age = 32;

console.log(person); // محتوا تغییر کرده اما خود متغیر person همچنان به همان آبجکت اشاره دارد.

مثال در آرایه:

const numbers = [1, 2, 3, 4, 5];
numbers.push(6); // این کار مجاز است!

console.log(numbers); // خروجی: [1, 2, 3, 4, 5, 6]

نکته کلیدی: شما می‌توانید محتوای یک آبجکت یا آرایه ثابت (const) را تغییر دهید (Mutate)، اما نمی‌توانید آن متغیر را به‌طور کلی به یک آبجکت یا آرایه جدید "انتساب مجدد" بدهید.


از کدام یک استفاده کنیم؟

به‌عنوان یک توسعه‌دهنده، پیشنهاد من و استانداردی که در این بخش‌ها دنبال می‌کنیم این است:

  • همیشه از const استفاده کنید، مگر اینکه بدانید مقدار آن متغیر قرار است در طول برنامه تغییر کند (Reassign شود).
  • در مواردی مثل حلقه‌ها (Iterators) یا متغیرهایی که مقدارشان در شرط‌های مختلف عوض می‌شود، از let استفاده کنید.

استفاده از const کد شما را ایمن‌تر، خواناتر و قابل پیش‌بینی‌تر می‌کند؛ زیرا به هر کسی که کد را می‌خواند اعلام می‌کند که این مقدار قرار نیست دوباره انتساب داده شود.


جمع‌بندی

در این بخش آموزشی یاد گرفتیم:

  • تفاوت var با let و const در چیست.
  • قوانین نام‌گذاری متغیرها در جاوااسکریپت کدامند.
  • چگونه متغیرهای ثابت (const) را در آرایه‌ها و آبجکت‌ها تغییر دهیم.
  • چرا در جاوااسکریپت مدرن باید از var دوری کرد.

در آموزش بعدی، به سراغ انواع داده‌ها (Data Types) در جاوااسکریپت می‌رویم و تفاوت انواع Primitive و Reference را بررسی می‌کنیم.

// 0 comments
#جاوااسکریپت#آموزش جاوااسکریپت#متغیرها#var#let#const#برنامه نویسی مدرن#ES6#قراردادهای نام‌گذاری#آموزش JavaScript

نظرات (0)

نظر خود را بنویسید