هر متغیری یک بلاک اسکوپ دارد یعنی یک ناحیه ای دارد که در آن تعریف شده و دارای ارزش است . مثلا اگر یک متغیر داخل یک فانکشن تعریف شده خارج از آن در دسترس نیست و خطا میده .
پیشنهاد ویژه: آموزش رایگان جاوااسکریپت
<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 هست و از بخش های مختلف برنامه می توان به آن دسترسی داشت.
متغیر هایی که با استفاده از let و const تعریف میشوند محدوده آنها بلوک است یعنی در همان بلوکی که تعریف شده است معتبر است. در حالی که var اینطور نیست ، حتی اگر درون یک بلوک هم تعریف شود در همه قسمتهای تابع قابل استفاده است.
اگر ما یک متغیر را تعریف کنیم مثلا x=5 و چاپ کنیم و بعد دوباره با var تعریفش کنیم و مقدار دهی نکنیم از مقدار قبلی استفاده میکند و باعث ایجاد خطا می شود و البته این خطا مشخص هم نمی شود برای اینکه این مشکل پیش نیاید از متغیر های let و const تعریف شدند . این متغیر ها چون بلوکی هستند فقط در بلوک خود قابل استفاده هستند و اگر در جای دیگر فراخوانی شوند خطا می دهند . البته متغیری که با let تعریف می شود می تواند مقدار جدیدی بپذیرد و شبیه let عمل میکند در این مورد ولی متغیری که با const تعریف شود حتی مقدار جدید هم نمی پذیرد و به همین دلیل اگر متغیر ثابتی داشته باشیم بهتر است با const تعریفش کنیم.