محدوده متغیرها در جاوا اسکریپت

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

محدوده متغیرها در جاوا اسکریپت

محدوده اشاره به در دسترس بودن متغیرها و توابع در بخش های خاصی از کد می باشد.

در جاوا اسکریپت یک متغیر دارای دو نوع دامنه میباشد:

  1. دامنه سراسری ( global scope)
  2. دامنه محلی (local scope)

دامنه سراسری (Global Scope)

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

بیایید نمونه ای از یک متغیر سراسری را ببینیم.

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

مقدار یک متغیر سراسری را می توان در داخل یک تابع تغییر داد. مثلا:

در برنامه فوق، متغیر a یک متغیر سراسری است. که مقدار ان ” hello ” میباشد. که از طریق تابع ()greet  به متغیر a دسترسی پیدا کرده و مقدار آن را به 3 تغییر می هد. از این رو، مقدار a پس از تغییر آن در داخل تابع تغییر می کند.

توجه: بهتر است  در رابطه با استفاده از متغیرهای سراسری صرفه نظر نماییم زیرا مقدار متغیر سراسری می تواند در قسمتهای مختلف برنامه تغییر کند. که می تواند نتایج ناشناخته ای را در برنامه ایجاد نماید.

در جاوا اسکریپت نیز می توان از یک متغیر بدون اعلان استفاده کرد. اگر یک متغیر بدون اعلام آن استفاده شود، آن متغیر به طور خودکار به یک متغیر سراسری تبدیل می شود.
به عنوان مثال:

در برنامه فوق، متغیر a یک متغیر سراسری است.

اگر متغیر با استفاده از let a = “hello” اعلان شود، برنامه خطا می دهد.

توجه: در جاوا اسکریپت،”strict mode” وجود دارد. که در آن یک متغیر بدون اعلان آن قابل استفاده نیست. برای کسب اطلاعات بیشتر در مورد سخت‌گیری، از JavaScript Strict دیدن کنید.

دامنه محلی (local scope)

یک متغیر همچنین می تواند یک محدوده محلی داشته باشد، مثلا فقط در یک تابع قابل دسترسی باشد.

مثال 1: متغیر محدوده محلی


خروجی:
در برنامه فوق، متغیر a یک متغیر سراسری و متغیر b یک متغیر محلی است. متغیر b فقط در داخل تابع greet قابل دسترسی است. از این رو، وقتی سعی می کنیم به متغیر b خارج از تابع دسترسی پیدا کنیم، خطا رخ می دهد.

 let یک Block Scoped

کلمه کلیدی let دارای محدوده بلوکی است (متغیر فقط در بلوک جاری قابل دسترسی است).

مثال 2: متغیر با محدوده بلوکی


خروجی :

در برنامه فوق , متغیر:

  • a یک متغیر سراسری است. در هر جایی از برنامه قابل دسترسی است.
  • b یک متغیر محلی است. فقط در داخل تابع greet قابل دسترسی است.
  • c یک متغیر با محدوده بلوک است. فقط در داخل بلوک دستور if قابل دسترسی است.

از این رو، در برنامه فوق، دو () console.log اول بدون هیچ مشکلی کار می کنند.

با این حال، ما سعی می کنیم به متغیر c با محدوده بلوکی در خارج از بلوک در سومین () console.log دسترسی پیدا کنیم.که این یک خطا ایجاد می کند.
توجه: در جاوا اسکریپت، var دارای محدوده تابع و let با محدوده بلوک است. اگر سعی می کنید از  ‘var c = ‘hello  استفاده کنید. در داخل دستور if در برنامه فوق، کل برنامه کار می کند، زیرا c به عنوان یک متغیر محلی در نظر گرفته می شود.
خب دوستان عزیز به پایان مقاله محدوده متغیرها در جاوا اسکریپت رسیدیم امیدواریم این مقاله برا شما مفید واقع شده باشد.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]
اشتراک‌گذاری

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *