اگر قبل از این با هر کدوم از زبان برنامه نویسی آشنایی داشتهباشید حتما با متغیرها کار کردید. تعریف هم سادست:
متغیر: یه فضا برای ذخیره موقت اطلاعات که برای دسترسی همیشه دارای نام هستند.
تعریف متغیرها در جاوا اسکریپت
تو جاوا اسکریپت هم مثل بقیهی زبان های برنامه نویسی تعریف کردن یک متغیر برای خودش قوانین و اصول + قراردادهایی داره.
در سال ۲۰۱۸ ما سه کلمه کلیدی برای تعریف متغیرها در جاوا اسکریپت داریم:
var
– روش قدیمی برای تعریف متغیرها. یک متغیر تعریف میکنه.const
– اضافه شده در استاندارد ES6 (ECMAScript 2015). همونطور که از اسمش معلومه یه ثابت رو محدوده بلاک تعریف میکنه پس بعد از تعریف مقدار متغییر رو نمیشه تغییر داد.let
– اضافه شده در استاندارد ES6 (ECMAScript 2015). متغیر رو در محدوده بلاک تعریف میکنه و بیرون از اون محدوده دیگه متغیر قابل دسترس نیست.
خوب چند تا مثال:
تعریف متغیر با const
<script> const WEBSITE_ADDR = 'www.irDevs.com'; // let change it //WEBSITE_ADDR = 'www.irdevelopers.com'; // TypeError: invalid assignment to const `WEBSITE_ADDR' if (WEBSITE_ADDR === 'www.irDevs.com') { const WEBSITE_ADDR = 'new address'; console.log(WEBSITE_ADDR); // prints 'new address' } console.log(WEBSITE_ADDR); // prints 'www.irDevs.com' </script>
میبینید که تو لاین اول یک ثابت تعریف کردیم و در لاین بعد سعی کردیم مقدار جدیدی بهش بدیم که اینکار ممکن نیست. اما چون const
بلاک محور یا Block-scope هست ما اینجا میتونیم تو بلاک if
مقدارش رو تغییر بدیم و فقط در محدوده همین بلاک قابل درسترس هست.
تعریف متغیر با let
let
دقیقا مثل const
بلاک محور هست اما مقدارش برخلاف const
قابل تغییر هست. در حقیقت نکته مهم اینجا Block-scope بودن let
هست و اومد تا از عیب های var
کم کنه شایدم جایگزین var
بشه . یه مثال در مورد var
و let
بیینید:
استفاده از var
تو حلقه for
:
for (var i = 0; i < 10; i ) { // ... } alert(i); // 10, "i" is visible after loop, it's a global variable
چون var
بلاک محور نیست حتی بعد(بیرون) از حلقه هم متغیر i
قابل دسترس هست.
استفاده از let
تو حلقه for
:
<script> for (let i = 0; i < 10; i ) { // ... } alert(i); // undefined, "i" is NOT visible after loop, it's a local variable </script>
تو این مثال i
در بیرون ازبلاک if
تعریف نشده است.
چند مثال دیگه از تعریف متغیرها:
میتونید چندین متغیر رو در یک لاین به این شکل تعریف کنید (مقدار بهشون بدید یا ندید):
var user = 'John', age = 25, message = 'Hello', car;
و یا متغیر رو تعریف کنید و بعد مقدار بدید:
var carName; carName = 'McLaren';
و مقدارش رو عوض کنید:
let message; message = 'Hello!'; message = 'World!'; // value changed alert(message); // World!
قوانین نامگذاری متغیرها در جاوا اسکریپت
قطعا ما نیاز داریم تا برای متغیرها یه اسم بذاریم تا بتونیم بعدا ازش استفاده کنیم قوانین نامگذاری متغیر این ها هستن:
- نام متغیر میتونه حاوی حروف، اعداد و علائم _ و $ باشه
- نام متغیر نباید با عدد شروع بشه
- نام متغیر نمیتونه یک کلمه کلیدی یا نام رزرو شده باشه
کلمات رزرو در ES5 اینا هستن:
break, do, instanceof, typeof, case, else, new, var, catch, finally, return, void, continue, for, switch, while, debugger, function, this, with, default, if, throw, delete, in, try
مثال نام های صحیح برای متغیر:
let iranIslamicRepublic; var _iran; var %u0627%u06CC%u0631%u0627%u0646; let $ = 'jQuery'; var _;
مثال نام های ناصحیح برای متغیر:
var 1_iran; // SyntaxError: identifier starts immediately after numeric literal var % = '2'; // SyntaxError: missing variable name let var; // SyntaxError: unexpected token: keyword 'var var for; // SyntaxError: missing variable name
قرارداد های نام گذاری متغیر و بهترین روش ها
خیلی از برنامه نویس ها روی این موضوع که یکی از سخت ترین کارها در برنامه نویسی انتخاب نام متغیرها در بصورت کلی نامگذاری چیزاست با هم، هم عقیده هستن! چون بسیار بسیار تو خوانایی برنامه که موضوع بسیار مهمیه نقش داره و یکی از راه های مهارت سنجی یه برنامه نویس همین نامگذاری چیز هاست.
تو همه ی زبانهای برنامه نویسی برای اینکه کد راحت تر خونده و توسعه کد آسون بشه عموما برنامه نویس ها میان از یکسری قواعد پیروی میکنن. برای مثال بیشتر برنامه نویس های جاوا اسکریپت برای جدا کردن کلمات در نام متغیر از روش camelCase استفاده میکنن. تو این روش حرف اول هر کلمه در نام متغیر بجر کلمه اول با حروف بزرگ نوشته میشه مثل currentUser
یا blogPost
. همچنین برای ثابت ها معمولا تماما از حروف بزرگ استفاده میشه.