انواع Scopeها در جاوا اسکریپت و پایتون

انواع Scopeها در جاوا اسکریپت و پایتون

انواع Scopeها در جاوا اسکریپت و پایتون
برنامه نویسی

انواع Scopeها در جاوا اسکریپت و پایتون

5/5 امتیاز

انواع Scope در جاوا اسکریپت و پایتون​! جاوا اسکریپت و پایتون دو زبان برنامه‌نویسی محبوب و پرکاربرد هستند که هرکدام ویژگی‌ها و کاربردهای منحصربه‌فرد خود را دارند. جاوا اسکریپت به‌طور گسترده در توسعه وب به‌کار می‌رود و به‌عنوان زبان اصلی برای برنامه‌نویسی سمت کاربر (Client-side) شناخته می‌شود. این زبان به توسعه‌دهندگان اجازه می‌دهد تا وب‌سایت‌ها و برنامه‌های وب تعاملی و پویا ایجاد کنند. از سوی دیگر، پایتون یک زبان چندمنظوره و سطح بالا است که به‌دلیل سادگی و خوانایی کد، در حوزه‌های مختلفی از جمله توسعه وب، علم داده، هوش مصنوعی و خودکارسازی استفاده می‌شود.

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!

مشاهده دوره‌ها

 

یکی از مفاهیم اساسی در هر دو زبان برنامه‌نویسی، Scope یا محدوده متغیرها است. Scope تعیین می‌کند که متغیرها و توابع در کدام بخش از کد قابل دسترسی و استفاده هستند. در جاوا اسکریپت، دو نوع Scope وجود دارد: Global Scope که متغیرها در تمام برنامه قابل دسترسی هستند و Local Scope که متغیرها فقط در داخل بلوک یا تابع تعریف‌شده قابل دسترسی هستند. پایتون نیز از مفاهیم مشابهی برای مدیریت محدوده متغیرها استفاده می‌کند، با این تفاوت که علاوه‌بر Global و Local، دو نوع Scope دیگر به نام‌های Enclosing و Built-in نیز دارد که به‌ترتیب به محدوده‌های تو در تو و محدوده توابع و متغیرهای داخلی زبان اشاره دارند.

انواع Scope در جاوا اسکریپت

در جاوا اسکریپت، Scope (دامنه) به محدوده‌ای از کد گفته می‌شود که در آن متغیرها و توابع قابل دسترسی هستند. به‌طور کلی، اسکوپ ها در جاوا اسکریپت شامل سه نوع می‌شوند: Global Scope، Function Scope و Block Scope. هرکدام از این انواع Scope‌ها به‌صورت زیر توضیح داده شده‌اند:

1. Global Scope (دامنه‌ی سراسری)

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

var globalVar = “I’m a global variable”;

function test() {

console.log(globalVar); // Accessible here

}

test();

console.log(globalVar); // Accessible here too

انواع Scopeها در جاوا اسکریپت

2. Function Scope (دامنه‌ی تابع)

متغیرهایی که داخل یک تابع تعریف می‌شوند، تنها در داخل همان تابع قابل دسترسی هستند و در خارج از آن تابع قابل مشاهده نیستند.

function myFunction() {

var functionVar = “I’m a function variable”;

console.log(functionVar); // Accessible here

}

myFunction();

console.log(functionVar); // Error: functionVar is not defined

3. Block Scope (دامنه‌ی بلاک)

آموزش لینوکس برای برنامه‌نویسان: بهره‌مندی از امکانات بی‌نظیر لینوکس در توسعه نرم‌افزار
بخوانید

متغیرهایی که بااستفاده از کلمات‌کلیدی let و const در یک بلاک ({}) تعریف می‌شوند، دارای Block Scope هستند. این متغیرها تنها در داخل همان بلاک قابل دسترسی هستند.

if (true) {

let blockVar = “I’m a block variable”;

console.log(blockVar); // Accessible here

}

console.log(blockVar); // Error: blockVar is not defined

خلاصه

  • Global Scope: متغیرهایی که در سطح جهانی تعریف می‌شوند و در همه جا قابل دسترسی هستند.
  • Function Scope: متغیرهایی که داخل یک تابع تعریف می‌شوند و تنها در داخل همان تابع قابل دسترسی هستند.
  • Block Scope: متغیرهایی که با let یا const در یک بلاک تعریف می‌شوند و تنها در داخل همان بلاک قابل دسترسی هستند.

در نسخه‌های جدید جاوا اسکریپت (ES6 و بعد از آن)، توصیه می‌شود از let و const برای تعریف متغیرها استفاده شود تا از مشکلات ناشی از دامنه‌ی متغیرها جلوگیری شود.

انواع Scopeها در پایتون

در پایتون، چهار نوع Scope (دامنه) اصلی وجود دارد: Local، Enclosing، Global، و Built-in. این دامنه‌ها در فرآیندی به نام LEGB (Local, Enclosing, Global, Built-in) قرار می‌گیرند. هرکدام از این اسکوپ ها در پایتون در ادامه بررسی شده‌اند:

1. Local Scope (دامنه محلی)

متغیرهایی که داخل یک تابع تعریف می‌شوند، دارای Local Scope هستند و تنها در داخل همان تابع قابل دسترسی هستند.

def my_function():

local_var = “I’m a local variable”

print(local_var) # Accessible here

my_function()

print(local_var) # Error: name ‘local_var’ is not defined

2. Enclosing Scope (دامنه محاطی)

این دامنه مربوط به توابع داخلی است که در داخل توابع دیگر تعریف شده‌اند. متغیرهایی که در تابع محاطی (خارجی) تعریف می‌شوند، در تابع داخلی قابل دسترسی هستند.

def outer_function():

enclosing_var = “I’m an enclosing variable”

def inner_function():

print(enclosing_var) # Accessible here

inner_function()

outer_function()

انواع Scopeها در پایتون

3. Global Scope (دامنه سراسری)

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

global_var = “I’m a global variable”

def my_function():

print(global_var) # Accessible here

my_function()

print(global_var) # Accessible here too

برای تغییر مقدار متغیرهای سراسری داخل یک تابع، باید از کلمه کلیدی global استفاده کنید:

global_var = “I’m a global variable”

def my_function():

global global_var

global_var = “I’m changed inside the function”

my_function()

print(global_var) # Output: I’m changed inside the function

4. Built-in Scope (دامنه داخلی)

این دامنه شامل توابع و متغیرهای داخلی پایتون است که به‌صورت پیش‌فرض در دسترس هستند. مانند print(), len() و غیره.

print(len(“Hello, World!”)) # Built-in functions are accessible everywhere

فرآیند LEGB (Local, Enclosing, Global, Built-in)

پایتون از این ترتیب برای جستجوی متغیرها استفاده می‌کند:

  • Local: ابتدا در دامنه محلی جستجو می‌شود.
  • Enclosing: سپس در دامنه محاطی (اگر وجود داشته باشد) جستجو می‌شود.
  • Global: بعد از آن در دامنه سراسری جستجو می‌شود.
  • Built-in: درنهایت، اگر متغیر پیدا نشود، در دامنه داخلی پایتون جستجو می‌شود.
تفاوت for و foreach در جاوا اسکریپت چیست؟
بخوانید

مثال کامل

global_var = “I’m a global variable”

def outer_function():

enclosing_var = “I’m an enclosing variable”

def inner_function():

local_var = “I’m a local variable”

print(local_var) # Local Scope

print(enclosing_var) # Enclosing Scope

print(global_var) # Global Scope

print(len(“example”)) # Built-in Scope

inner_function()

outer_function()

در این مثال، تابع inner_function به تمام چهار نوع دامنه دسترسی دارد: local_var از دامنه محلی، enclosing_var از دامنه محاطی، global_var از دامنه سراسری و len از دامنه داخلی پایتون.

فرآیند LEGB (Local, Enclosing, Global, Built-in)

نکات مهم

استفاده از کلمه کلیدی global برای تغییر متغیرهای سراسری داخل توابع.

استفاده از کلمه کلیدی nonlocal برای تغییر متغیرهای محاطی داخل توابع داخلی:

def outer_function():

enclosing_var = “I’m an enclosing variable”

def inner_function():

nonlocal enclosing_var

enclosing_var = “I’m changed inside the inner function”

inner_function()

print(enclosing_var) # Output: I’m changed inside the inner function

outer_function()

سخن پایانی

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

آکادمی چابک، با برگزاری دوره‌های تخصصی در زمینه برنامه‌نویسی و دیگر حوزه‌های فنی، به نیروهای فنی کمک می‌کند تا مهارت‌های لازم برای مدیریت و استفاده از Scopeها را به‌خوبی فرا بگیرند.

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!

مشاهده دوره‌ها

 

منابع

w3schools.com/js

w3schools.com/python

دیدگاه خود را اینجا قرار دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *