0
سبد خرید من 0 دوره
سبد خرید شما خالیست :(
پرسش

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

What is the scope of variables in JavaScript?

من می‌خوام بدونم که محدوده‌ی اسکوپ متغیرها تو جاوااسکریپت چطوری تعریف می‌شه.

آیا محدوده‌ی متغیرها داخل یک تابع و خارج از اون تفاوت داره ؟

پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

تو جاوااسکریپت، متغیرها می‌تونن در چهار سطح مختلف اسکوپ داشته باشن:

  1. اسکوپ سراسری (Global): متغیرهایی که در سطح سراسری تعریف می‌شن، در سراسر برنامه قابل دسترسی هستن.
  2. اسکوپ تابعی (Function): متغیرهایی که با var داخل یک تابع تعریف می‌شن، فقط داخل همون تابع قابل دسترسی هستن.
  3. اسکوپ بلوکی (Block): متغیرهایی که با let یا const تعریف می‌شن، فقط داخل همون بلوک (مثل بلوک‌های شرطی یا حلقه‌ها) قابل دسترسی هستن.
  4. اسکوپ ماژولی (Module): متغیرهایی که داخل یک ماژول تعریف می‌شن، فقط داخل همون ماژول قابل دسترسی هستن.

به طور خلاصه، جاوااسکریپت از مدل اسکوپ لغوی (Lexical Scope) استفاده می‌کنه که به این معنیه که محدوده‌ی یک متغیر از جایی که تعریف شده مشخص می‌شه و به سمت بیرون (به سمت اسکوپ‌های بالاتر) حرکت می‌کنه. این باعث می‌شه تا درک و پیش‌بینی اسکوپ متغیرها راحت‌تر بشه.

 

مثال

function test() {
 var a = 1; // Function scope
 if (true) {
  let b = 2; // Block scope
  const c = 3; // Block scope
  console.log(a); // 1
  console.log(b); // 2
  console.log(c); // 3
 }
 console.log(a); // 1
 console.log(typeof b); // undefined
 console.log(typeof c); // undefined
}
test();
console.log(typeof a); // undefined

تو مثال بالا ، a داخل تابع test تعریف شده و در خارج از اون قابل دسترسی نیست. b و c فقط داخل بلوکی که درونشون تعریف شده قابل دسترسی هستن.

پاسخ: 1403/05/23
آخرین آپدیت: 1403/07/07