Scope

از موتو کد، دانشنامهٔ برنامه‌نویسی

Scope میزان دسترسی (میزان قابل مشاهده بودن) متغیرها را مشخص می‌کند. [۱]

Scope توابع در جاوا اسکریپت[ویرایش | ویرایش]

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

  • Scope محلی (local)
  • Scope جهانی یا کلی (Global)

جاوا اسکریپت دارای scope تابع است: هر تابع یک Scope جدید ایجاد می‌کند.

Scope میزان دسترسی (میزان قابل مشاهده بودن) متغیرها را مشخص می‌کند.

متغیرهایی که درون یک تابع تعریف می شوند از بیرون تابع قابل دسترسی (مشاهده) نیستند.

متغیرهای محلی (LOCAL) در جاوا اسکریپت[ویرایش | ویرایش]

متغیرهایی که درون یک تابع جاوا اسکریپت تعریف می‌شوند، برای آن تابع متغیر محلی محسوب می‌شوند.

متغیرهای محلی scope تابع را دارند: آنها تنها می‌توانند از درون خود تابع مورد دسترسی واقع شوند.

مثال[ویرایش | ویرایش]

// code here can NOT use carName

function myFunction() {
  var carName = "Volvo";

  // code here CAN use carName

}


مشاهدهٔ نتیجه


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

متغیرهای محلی زمانی که اجرای تابع آغاز می‌شود، ساخته می‌شود و زمانی که اجرای تابع کامل شد حذف می‌گردند.

متغیرهای جهانی، کلی (Global) در جاوا اسکریپت[ویرایش | ویرایش]

متغیری که خارج از یک تابع تعریف شود، GLOBAL یا جهانی یا کلی محسوب می‌شود.

یک متغیر کلی یا جهانی یا global دارای scope جهانی یا global است: تمامی اسکریپت‌ها وتوابع درون یک صفحه وب می‌تواننند به آن دسترسی داشته باشند.

مثال[ویرایش | ویرایش]

var carName = "Volvo";

// code here can use carName

function myFunction() {

  // code here can also use carName

}


مشاهدهٔ نتیجه


متغیرهای جاوا اسکریپت[ویرایش | ویرایش]

در جاوا اسکریپت، شی‌ها و توابع نیز متغیر هستند.

Scope میزان دسترسی به متغیرها، اشیاء و توابع را از بخش‌های مختلف کد مشخص می‌کند.

متغیر جهانی (Global) خودکار[ویرایش | ویرایش]

اگر شما مقداری را به یک متغیر که تعریف نشده انتساب دهید، این متغیر به صورت خودکار به عنوان یک متغیر جهانی یا GLOBAL شناخته می‌شود.

در مثال زیر، یک متغیر جهانی یا کلی (Global) با نام carName حتی اگر درون یک تابع مقدار دهی شود، تعریف می‌شود.

مثال[ویرایش | ویرایش]

myFunction();

// code here can use carName

function myFunction() {
  carName = "Volvo";
}


مشاهدهٔ نتیجه


مد یا حالت سخت گیرانه[ویرایش | ویرایش]

تمامی مرورگرهای مدرن جاوا اسکریپت را “حالت سخت گیرانه (strict mode)” اجرا می‌کنند.

شما مطالب بیشتری را در مورد اینکه چگونه از مد یا حالت سخت گیرانه (strict mode) در فصل‌های آینده از این آموزش خواهید آموخت.

متغیرهای جهانی یا کلی یا Global به صورت خودکار در “حالت سخت گیرانه (strict mode)” ایجاد نمی‌شوند.

متغیرهای کلی (Global) در HTML[ویرایش | ویرایش]

در جاوا اسکریپت، scope جهانی یا کلی شامل کل محیط جاوا اسکریپت می‌شود.

در HTML, scope جهانی یا کلی یا Global شی پنجره یا Window است. تمامی متغیرهای کلی یا Global به شیء پنجره|شیء پنجره (window) وابسته هستند.

مثال[ویرایش | ویرایش]

var carName = "Volvo";

// code here can use window.carName


مشاهدهٔ نتیجه


هشدار[ویرایش | ویرایش]

متغیرهای کلی (Global) ایجاد نکنید مگر اینکه به آن نیاز داشتید.

متغیرها (یا توابع کلی یا Global) می‌توانند متغیرها یا توابع شیء پنجره یا window را بازنویسی کنند.

هر تابعی، که شامل شیء Window یا پنجره نیز می‌شود، می‌تواند توابع و متغیرهای کلی یا جهانی یا Global شما را بازنویسی کند.

حیات متغیرها در جاوا اسکریپت[ویرایش | ویرایش]

حیات یک متغیر در جاوا اسکریپت زمانی آغاز می‌شود که آن متغیر تعریف می‌شود.

متغیرهای محلی زمانی که اجرای تابع به پایان می‌رسد، حذف می‌شوند.

در نرم‌افزارهای مروگر وب، متغیرهای جهانی یا Global زمانی که شما پنجره مرورگر (و یا زبانه) را می‌بندید حذف می‌شوند اما برای صفحات جدیدی که در پنجره یکسان بارگذاری می‌شوند همچنان در دسترس خواهند بود.

آرگومان های توابع[ویرایش | ویرایش]

آرگومان‌های تابع (پارامترهای یک تابع) همانند متغیرهای محلی درون یک تابع کار می‌کنند.


منابع آموزشی[ویرایش]