سلام دوستان. توی این قسمت میخوایم یکی دیگه از مفاهیم مهم جاوااسکریپت رو بررسی کنیم. مفهومی که درک کردن صحیح اون باعث میشه با خطاهای کمتری رو به رو بشیم و با خیال راحتتر کدنویسی کنیم.
امروز میخوایم درباره اسکوپ (Scope) توی جاوااسکریپت صحبت کنیم.
توی این قسمت یاد میگیریم که:
- اسکوپ یا حوزه چیه؟
- بلاک چیه؟
- اسکوپ سراسری (Global Scope) چیه؟
- اسکوپ محلی (Local Scope) چیه؟
- اسکوپ بلاکی (Block Scope) چیه؟
اسکوپ یا حوزه چیه؟ 🤔
بطور کلی اسکوپ (Scope) به قسمتهایی از برنامه گفته میشه که یک متغیر، تابع، آبجکت و ... قابل دسترسی هست. کد زیر رو اجرا کنید:
const x = 10; function getX() { alert(<<x>>); const y = 20; } getX(); alert(<<y>>); // error
توی تابع getX تونستیم به متغیر x که بیرون از تابع تعریف شده دسترسی داشته باشیم و اون رو alert کنیم. همچنین توی این تابع یک متغیر تعریف کردیم به اسم y و اون رو داریم توی خط آخر alert میکنیم. اما اینجا خطا میگیریم که y تعریف نشده. چرا اینطوری میشه؟ به دلیل قوانینی که اسکوپها توی جاوااسکریپت دارن! توی این قسمت میریم که این قوانین رو بررسی کنیم 😉
توی جاوااسکریپت ۳ نوع اسکوپ داریم:
- اسکوپ سراسری (Global Scope)
- اسکوپ محلی (Local Scope)
- اسکوپ بلاکی (Block Scope)
قبل از شروع یک چیز رو باید بررسی کنیم: بلاک یا Block
بلاک چیه؟
به فضایی از کد که بین دو براکت { ... } قرار میگیره میگیم بلاک. مثلاً فضای داخل if ،while و ... :
if (...) { /* Block */ } for (...) { /* Block */ } { /* Block */ }
حالا بریم انواع اسکوپها رو بررسی کنیم.