پایهایترین نوع دستور در جاوااسکریپت، همین دستور بلاکی (Block statement) هست. کارش خیلی سادهست: کدهای مختلف رو دستهبندی میکنه و کنار هم قرار میده. یک بلاک همیشه بین یک جفت آکلواد یا کروشه باز و بسته ({ }) قرار میگیره:
{
دستور اول;
دستور دوم;
// ...
دستور آخر;
}
بلاکها معمولاً به تنهایی استفاده نمیشن؛ بلکه اونها رو همراه با دستورات کنترل جریان (مثل شرط if یا حلقههای for و while) میبینیم تا مشخص کنیم چه کدهایی باید تحت اون شرط یا حلقه اجرا بشن.
به این نمونه نگاه کن:
while (x < 10) {
x++;
}
توی این کد، تیکه { ++x; } دقیقاً همان دستور بلاکی ماست.
var (حتماً حواست باشه!)یادت باشه که متغیرهای تعریف شده با var محدود به بلاک (Block-scoped) نیستند! یعنی آکلوادها نمیتونن جلوی خروجِ var رو بگیرن. محدوده var کلِ اون تابع یا کل صفحهست. برای همین، اگر مقدار یک var رو داخل یک بلاک تغییر بدی، اثرش بیرون از بلاک هم باقی میمونه:
var x = 1;
{
var x = 2; // روی همان x قبلی تاثیر میگذاره!
}
console.log(x); // خروجی میشه: 2
این کد عدد 2 رو چاپ میکنه؛ چون var x داخل بلاک، دقیقاً در همان محدوده و فضای var x بیرونِ بلاک قرار داره و دومی روی اولی اووررایت (Overwrite) میشه.
یک نکته برای عشقِ زبانها: اگر قبلاً با زبانهایی مثل C یا Java کار کرده باشی، میدونی که این کد اونجا عدد
1رو چاپ میکنه؛ چون اون زبانها بلاک رو یک مرز محکم میدونن. اما جاوااسکریپتِ قدیمی اینطوری نبود!
برای اینکه کدهات دچار این رفتار عجیب و غریب نشن و مرز آکلوادها حفظ بشه، کافیه به جای var از کلمات کلیدی مدرن یعنی let یا const استفاده کنی. اونها کاملاً محدود به بلاک هستند و بیرون از آکلواد هیچ اثری ازشون باقی نمیمونه.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript