حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

آموزش block scope در جاوااسکریپت؛ مرزهای let و const

دامنه متغیرها در جاوااسکریپت و خطاهای scope · 0٪

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

مثال پایین مبلغ خرید را بیرون شرط نگه می‌داره، ولی مقدار تخفیف فقط موقع محاسبه لازم است. بعد از تمام شدن شرط، amount هنوز در دسترس است؛ discount نیست. اگر لازم داری نتیجه‌ای بعد از شرط استفاده بشه، نتیجه را بیرون تعریف کن و داخل شرط مقدارش را تغییر بده. خطای رایج اینه که متغیر نتیجه را داخل شرط بسازی و بعد بیرون از آن بخوانی؛ حتی اگر شرط اجرا شده باشه، دامنه متغیر عوض نمی‌شه.

✍️ موقع خواندن کد، برای هر نام از نزدیک‌ترین آکولاد شروع کن و به سمت بیرون برو. تعریف نزدیک‌تر تعیین می‌کنه آن نام به کدام متغیر اشاره دارد.

let amount = 200;
if (amount >= 100) {
  const discount = 20;
  amount = amount - discount;
}
console.log(amount); // 180
// console.log(discount); // ReferenceError

فعالیت شما

مثال را دنبال کن؛ فرق دسترسی به amount و discount بیرون بلوک را توضیح بده.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید: