آرتا رسانه

آژانس دیجیتال مارکتینگ آرتا رسانه با سالها تجربه کنار شماست

آکادمی آرتا رسانه با دوره های آموزشی رایگان

Scope

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

<p id=”demo1″></p>

<p id=”demo2″></p>

<script>

myFunction();

function myFunction() {

  let carName = “Volvo”;

  document.getElementById(“demo1″).innerHTML = typeof carName + ” ” + carName;

}

document.getElementById(“demo2”).innerHTML = typeof carName;

</script>

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

Scope Global: اگر متغیررا با شکل های var,let و const را خارج از فانکشن تعریف کنیم در واقع Global هست و از بخش های مختلف برنامه می توان به آن دسترسی داشت.

تفاوت var, let و const

متغیر هایی که با استفاده از let  و const تعریف می‌شوند محدوده آن‌ها بلوک است یعنی در همان بلوکی که تعریف شده است معتبر است. در حالی که var اینطور نیست ، حتی اگر درون یک بلوک هم تعریف شود در همه قسمت‌های تابع قابل استفاده است.

Hoisting

اگر ما یک متغیر را تعریف کنیم مثلا x=5 و چاپ کنیم و بعد دوباره  با var تعریفش کنیم و مقدار دهی نکنیم از مقدار قبلی استفاده میکند و باعث ایجاد خطا می شود و البته این خطا مشخص هم نمی شود برای اینکه این مشکل پیش نیاید از متغیر های let  و  const تعریف شدند . این متغیر ها چون بلوکی هستند فقط در بلوک خود قابل استفاده هستند و اگر در جای دیگر فراخوانی شوند خطا می دهند . البته متغیری که با let تعریف می شود می تواند مقدار جدیدی بپذیرد و شبیه let عمل میکند در این مورد ولی متغیری که با const تعریف شود حتی مقدار جدید هم نمی پذیرد و به همین دلیل اگر متغیر ثابتی داشته باشیم بهتر است با const تعریفش کنیم.

پیمایش به بالا