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

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

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

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

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

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

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

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

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

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

// program to print a text 
let a = "hello";

function greet () {
    console.log(a);
}

greet(); // hello

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

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

// program to show the change in global variable
let a = "hello";

function greet() {
    a = 3;
}

// before the function call
console.log(a);

//after the function call
greet();
console.log(a); // 3

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

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

در جاوا اسکریپت نیز می توان از یک متغیر بدون اعلان استفاده کرد. اگر یک متغیر بدون اعلام آن استفاده شود، آن متغیر به طور خودکار به یک متغیر سراسری تبدیل می شود.
به عنوان مثال:
function greet() {
    a = "hello"
}

greet();

console.log(a); // hello

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

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

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

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

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

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

// program showing local scope of a variable
let a = "hello";

function greet() {
    let b = "World"
    console.log(a + b);
}

greet();
console.log(a + b); // error

خروجی:

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

 let یک Block Scoped

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

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

// program showing block-scoped concept
// global variable
let a = 'Hello';

function greet() {

    // local variable
    let b = 'World';

    console.log(a + ' ' + b);

    if (b == 'World') {

        // block-scoped variable
        let c = 'hello';

        console.log(a + ' ' + b + ' ' + c);
    }

    // variable c cannot be accessed here
    console.log(a + ' ' + b + ' ' + c);
}

greet();

خروجی :

Hello World
Hello World hello
Uncaught ReferenceError: c is not defined

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

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

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

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

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]
تصویر علی فرجی

علی فرجی

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

مقالات آموزشگاه کدایت

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

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

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

آموزشگاه کدایت

پلتفرم یادگیری مهارت‌های مهندسی نرم‌افزار

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

اطلاعات تماس

تمامی حقوق این وب‌سایت متعلق به مجموعه کدایت است.

طراحی سایت : ایپک