تعریف متغیر در جاوا اسکریپت – آنچه باید بدانید + کد
در دنیای برنامه نویسی، پردازش اطلاعات جنبهای اساسی از برنامههای کاربردی است. در پردازش اطلاعات یکی از عناصر مهم در تمام زبانهای برنامه نویسی، از جمله جاوا اسکریپت، متغیرها هستند. این ابزارهای ارزشمند به کاربران و برنامه نویسان اجازه میدهند دادههایی را که برای عملکرد برنامهها ضروری هستند، ذخیره و دستکاری کنند. در مطلب پیشرو از «مجله فرادرس» به بررسی تعریف متغیر در جاوا اسکریپت، انواع متغیرها در جاوا اسکریپت و همچنین تکنیکهای مناسب برای اعلان و استفاده از آنها پرداخته خواهد شد. علاوه بر این، در این مطلب مفاهیم اساسی مانند دامنههای متغیر در جاوا اسکریپت نیز پوشش داده میشود.
تعریف متغیر در جاوا اسکریپت
در جاوا اسکریپت، از کلمات کلیدی مختلفی برای اعلان یا تعریف متغیر استفاده میشود که هرکدام هدف خاصی را دنبال میکنند. از مهمترین این کلمات کلیدی میتوان موارد زیر را نام برد:
- let: در جاوا اسکریپت مدرن از این کلمه کلیدی برای اعلام متغیرها استفاده میشود. هنگام استفاده از let، متغیر را میتوان مجدداً تخصیص داد و این ویژگی امکان انعطافپذیری در دادههایی را که نگه میدارد، فراهم میکند.
- var: این کلمه کلیدی رویکرد قدیمیتری را برای اعلان متغیرها در جاوا اسکریپت نشان میدهد. متغیرهای اعلان شده با varنیز قابلتخصیص مجدد هستند اما از نظر دامنه، رفتار متفاوتی دارند که در ادامه به آن خواهیم پرداخت.
- const: مشابه let، constبرای اعلان متغیرها استفاده میشود اما با تمایزی قابلتوجه. هنگامی که مقداری به متغیر constاختصاص داده میشود، نمیتوان آن را در طول اجرای برنامه تغییر داد. این تغییرناپذیری زمانی مفید است که کاربر بخواهد اطمینان حاصل کند که متغیر مقدار اولیه خود را در سراسر کد حفظ میکند.
با درک تفاوتهای بین این روشهای تعریف متغیر در جاوا اسکریپت توسعهدهندگان میتوانند تصمیمات مناسبی در مورد اینکه کدام نوع اعلان متغیر مناسبتر است را با موارد استفاده خاص آنها، اتخاذ کنند.
چند روش برای تعریف متغیر در جاوا اسکریپت وجود دارد؟
در حالت عادی تعریف متغیر در جاوا اسکریپت با استفاده از کلمات کلیدی مختلفی مانند «Var»، «Let» و «Const» صورت میگیرد اما روشهای دیگری نیز برای انجام این کار وجود دارد که به همان اندازه حائز اهمیت بوده و شامل روش «اعلان تابع»، «اعلان کلاس» و «دستور Import» هستند. توجه به توضیحات زیر در رابطه با این روشها ضرروی است.
- اعلان تابع: در جاوا اسکریپت، توابع را میتوان با استفاده از کلمه کلیدی function اعلان کرد. توابع میتوانند پارامتر داشته باشند و همچنین میتوانند مقادیری را برگردانند. متغیرهایی که در داخل توابع با استفاده از var، letیا constاعلام شدهاند، محلی برای محدوده آن تابع در نظر گرفته میشوند.
- اعلان کلاس: «جاوا اسکریپت ES6» کلاسها را به عنوان روشی جدید برای ایجاد اشیا معرفی کرد. کلمه کلیدی class به توسعهدهندگان اجازه میدهد تا کلاسهایی را تعریف کنند که میتواند شامل ویژگیها و متدها باشد. متغیرهای اعلام شده در کلاس با استفاده از var، letیا constاعضای کلاس در نظر گرفته میشوند.
- دستور IMPORT: با ظهور ماژولهای ES6، جاوا اسکریپت اکنون از وارد کردن متغیرها از فایلهای دیگر پشتیبانی میکند. عبارت import برای وارد کردن متغیرها یا توابع اعلام شده در ماژول دیگر استفاده میشود و آنها را در ماژول فعلی قابل دسترسی میکند.
در بخشهای بعد این مطلب علاوه بر تعریف متغیر در جاوا اسکریپت با استفاده از کلمات کلیدیvar، letو constروشهای نام برده بالا هم بهصورت کامل همراه با مثال آموزش داده خواهند شد. قبل از پرداختن به این روشهای اعلان متغیر در جاوا اسکریپت، مروری بر قوانین نامگذاری متغیرها خالی از لطف نیست.
قوانین نامگذاری متغیرها در جاوا اسکریپت
مانند هر زبان دیگری جاوا اسکریپت هم برای تعریف متغیرها قوانین خاص خودش را دارد. در جاوا اسکریپت، نام متغیرها باید از دو محدودیت خاص زیر تبعیت کند:
- نام متغیرها فقط شامل حروف، ارقام یا نمادهای $ و _ است.
- اولین کاراکتر نباید یک باشد.
انتخاب نام متغیرهای مناسب و معنیدار مهارتی حیاتی در برنامه نویسی است. متغیرهایی که به خوبی نامگذاری شدهاند، خوانایی و قابلیت نگهداری کد را افزایش میدهند. بهتر است کاربران قبل از اعلان نام متغیرها روی عمل نامگذاری وقت کافی بگذارند. هنگام استفاده از چندین کلمه در نام متغیر، توصیه میشود از سینتکس «camelCase» پیروی شود، جایی که اولین کلمه با حرف کوچک شروع میشود و کلمات بعدی با حروف بزرگ شروع خواهند شد. به عنوان مثال randomLongName با این قرارداد نامگذاری شده است.
جالب است بدانید که هم علامت $و هم آندرلاین _را میتوان در نام متغیرها استفاده کرد. آنها به عنوان نمادهای منظم، درست مانند حروف، بدون هیچ معنای خاصی در نظر گرفته میشوند. به این ترتیب، متغیرهای زیر همگی به صورت معتبر نامگذاری شدهاند.
1let $ = 10; // variable with the name "$"
2let _ = 25; // variable with the name "_"
3
4console.log($ + _); // Output: 35
همچنین نمونههای زیر دارای نامگذاری غلطی هستند:
1let 1a; // Variable names cannot start with a digit
2let my-name; // Hyphens '-' aren't allowed in variable names
از طرفی دیگر، کلمات خاصی از قبل در زبان رزرو شدهاند و نمیتوان از آنها به عنوان نام متغیر استفاده کرد زیرا از قبل به وسیله خود زبان استفاده شده است. چند نمونه از کلمات رزرو شده عبارتاند از let ،class ،return ،function و غیره. در مطلب Var در جاوا اسکریپت از مجله فرادرس فهرست این کلمات آورده شده است. تلاش برای استفاده از آنها به عنوان نام متغیر منجر به خطاهای نحوی میشود. مانند مثال زیر:
1let let = 50; // Error: "let" cannot be used as a variable name
2let return = 25; // Error: "return" cannot be used as a variable name
به طور خلاصه، با انتخاب نامهای توصیفی و مناسب متغیرها که به قوانین نامگذاری پایبند باشند، کدهایی خواناتر با قابلیت نگهداری بهتری داریم که برنامهنویسی بهتری را شامل میشود.
تعریف متغیر در جاوا اسکریپت با Var
کلمه کلیدی varقبلاً برای اعلام متغیرها در جاوا اسکریپت استفاده میشد و امکان تخصیص مجدد مقادیر آنها را فراهم میکرد. با این حال این کلمه کلیدی برای تعریف متغیر در جاوا اسکریپت حاوی مشكلات زیر است:
- «Hoisting در جاوا اسکریپت»: متغیرهای اعلام شده با varدر بالای محدوده خود قرار میگیرند و قبل از اعلان واقعی آنها قابل دسترسی هستند. در نتیجه متغیرهای اعلان شده با این روش تا زمانی که مقدار مناسبی به آن اختصاص داده شود، مقدار undefined را نگه میدارند.
- اعلان مجدد: در همان محدوده، استفاده از varبرای اعلام مجدد متغیر اساساً مقدار آن را مجدداً تخصیص میدهد که این امر به منجر به پیامدهای ناخواسته میشود.
- فقدان «محدوده بلوکی» (Block Scope): متغیر اعلان شده با varدر جاوا اسکریپت دارای محدوده سطح بلوک نیست و این مسئله باعث ایجاد مشکلات بالقوه در مدیریت متغیرها در پایگاههای کد بزرگتر میشود.
به دلیل این کاستیها، استفاده ازvarدر توسعه جاوا اسکریپت مدرن دیگر رایج نیست. در عوض، اکنون توسعهدهندگان letو constرا برای اعلانهای متغیر ترجیح میدهند زیرا محدوده بهتری ارائه میدهند و به جلوگیری از اشکالات مربوط Hoisting کمک میکنند. مثال زیر نحوه استفاده از varرا برای تعریف متغیر نشان میدهد:
1console.log(x); // Output: undefined
2var x = 1;
3
4
5var x = 2;
6console.log(x); // Output: 2
برای افزایش کیفیت کد و جلوگیری از چنین مشکلاتی، بهتر است از letو constبرای تعریف متغیرها در پروژههای جاوا اسکریپت مدرن استفاده شود.
let در جاوا اسکریپت برای تعریف متغیر
در جاوا اسکریپت، از کلمه کلیدی letبرای اعلام متغیرهایی استفاده میشود که میتوانند مجدداً تخصیص داده شوند. برخلاف varمتغیرهای اعلام شده با letرا نمیتوان قبل از اعلانهایشان استفاده کرد و از هرگونه مشکل مربوط به Hoisting در جاوا اسکریپت جلوگیری میکند. بهعلاوه، letاجازه نمیدهد که متغیری مشابه را در محدوده یکسان اعلام کرد که این ویژگی مشکل تخصیص تصادفی متغیر را برطرف کند. نحوه ایجاد یا تعریف متغیر در جاوا اسکریپت با استفاده از کلمه کلیدی letبه صورت زیر است:
1let information;
هنگامی که متغیر اعلام شد، میتوان دادهها را با استفاده از عملگر انتساب (=) به متغیر نسبت داد.
1let information = "Hello you";
همچنین متغیرهای متعددی را میتوان در چند خط اعلام کرد:
1let user = 'John';
2let age = 25;
3let message = 'Hello my Friend';
در این روش تعریف متغیر در جاوا اسکریپت تلاش برای اعلان متغیری یکسان بیش از یک بار باعث بروز خطا میشود. متغیر باید فقط یک بار در همان محدوده اعلان شود:
1let information = 'coco banjo';
2// Repeated 'let' leads to an error
3let information = 'baba banjo'; // SyntaxError: 'information' has already been declared
باید به این نکته توجه داشت که هنگام استفاده از letبرای تعریف متغیر در جاوا اسکریپت، بهمنظور جلوگیری از بروز خطا، از اعلان متغیر بیش از یک بار در محدودهای خاص اجتناب شود. یکی از مزایای قابلتوجه letاین است که محدوده بلوک را معرفی میکند. متغیرهای اعلان شده با letبه بلوکی که در آن تعریف شدهاند محدود میشوند، مانند حلقهها، دستورات شرطی یا بدنههای تابع. این به مدیریت مؤثرتر متغیرها در جاوا اسکریپت کمک میکند و احتمال اثرات جانبی ناخواسته را کاهش میدهد.
تعریف متغیر با Const در جاوا اسکریپت
در جاوا اسکریپت، از کلمه کلیدی constبرای اعلان متغیرهای ثابت استفاده میشود که اساساً متغیرهایی هستند که پس از تخصیص اولیه نمیتوان آنها را دوباره تخصیص داد. هنگامی که مقداری به ثابتی اختصاص داده میشود، هر تلاشی برای تغییر آن منجر به خطا خواهد شد که مثال زیر این موضوع را نشان میدهد:
1const myAddress = 'Sherbrooke, Canada';
در مثال بالا، myAddress نوعی ثابت است و بعداً نمیتوان مقدار جدیدی را به آن اختصاص داد.