سلام دوستان. توی این قسمت می‌خوایم یکی دیگه از مفاهیم مهم جاوااسکریپت رو بررسی کنیم. مفهومی که درک کردن صحیح اون باعث میشه با خطاهای کمتری رو به رو بشیم و با خیال راحت‌تر کدنویسی کنیم.

امروز می‌خوایم درباره اسکوپ (Scope) توی جاوااسکریپت صحبت کنیم.

توی این قسمت یاد می‌گیریم که:

 

اسکوپ یا حوزه چیه؟ 🤔

بطور کلی اسکوپ (Scope) به قسمت‌هایی از برنامه گفته میشه که یک متغیر، تابع، آبجکت و ... قابل دسترسی هست. کد زیر رو اجرا کنید:

const x = 10;

function getX() {
  alert(<<x>>);

  const y = 20;
}

getX();
alert(<<y>>); // error

توی تابع getX تونستیم به متغیر x که بیرون از تابع تعریف شده دسترسی داشته باشیم و اون رو alert کنیم. همچنین توی این تابع یک متغیر تعریف کردیم به اسم y و اون رو داریم توی خط آخر alert می‌کنیم. اما اینجا خطا می‌گیریم که y تعریف نشده. چرا اینطوری میشه؟ به دلیل قوانینی که اسکوپ‌ها توی جاوااسکریپت دارن! توی این قسمت می‌ریم که این قوانین رو بررسی کنیم 😉

توی جاوااسکریپت ۳ نوع اسکوپ داریم:

  1. اسکوپ سراسری (Global Scope)
  2. اسکوپ محلی (Local Scope)
  3. اسکوپ بلاکی (Block Scope)

قبل از شروع یک چیز رو باید بررسی کنیم: بلاک یا Block

 

بلاک چیه؟

به فضایی از کد که بین دو براکت { ... } قرار می‌گیره می‌گیم بلاک. مثلاً فضای داخل if ،while و ... :

if (...) {
  /* 
    Block
  */
}

for (...) {
  /* 
    Block
  */
}

{
  /* 
    Block
  */
}

حالا بریم انواع اسکوپ‌ها رو بررسی کنیم.

 

اسکوپ سراسری (Global Scope)