• تهران -خیابان شریعتی - بالاتر از سه راه ملک - روبروی آتش نشانی - آرتارسانه
  • تلفن تماس: 02191303424

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

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

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