آموزش برنامه نویسی جاوا اسکریپت-جلسه بیست و دوم

ژوئیه 08, 2024 8 mins read

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

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 تعریفش کنیم.

Image NewsLetter
Icon primary
Newsletter

در خبرنامه آرتا رسانه عضو شوید

با آخرین اخبار و تخفیف های ما آگاه شوید