محدوده (Scope) در جاوااسکریپت: بلوک، سراسری و تابع
محدوده (Scope) تعیین میکند که در کجای کد خود میتوانید از یک متغیر استفاده کنید.
۱. محدوده سراسری (Global Scope) متغیرها خارج از توابع یا بلوکها قرار دارند. شما میتوانید از هر جای اسکریپت خود به آنها دسترسی داشته باشید. هشدار: متغیرهای سراسری باعث ایجاد باگ میشوند، زیرا هر بخشی از کد شما میتواند آنها را تغییر دهد.
۲. محدوده تابع (Function Scope) متغیرها داخل یک تابع قرار دارند. شما فقط در داخل همان تابع خاص به آنها دسترسی دارید.
۳. محدوده بلوک (Block Scope)
این مورد مربوط به جاوااسکریپت مدرن با استفاده از let یا const است. متغیرها داخل آکولادها {} قرار میگیرند.
یک بلوک شامل موارد زیر است:
- دستورات
if - حلقههای
for - حلقههای
while - بلوکهای مستقل
{}
خلاصه محدوده (Scope):
- سراسری: در همه جا قابل دسترسی است.
- تابع: فقط داخل تابع قابل دسترسی است.
- بلوک: فقط داخل آکولادها قابل دسترسی است.
var: از محدوده تابع استفاده میکند و محدوده بلوک را نادیده میگیرد.letوconst: از محدوده بلوک استفاده میکنند. برای نوشتن کد بهتر، از اینها استفاده کنید.
درک فرآیندها (Processes) و رشتهها (Threads)
یک فرآیند (Process)، برنامهای در حال اجرا با حافظه اختصاصی خود است. واتساپ را به عنوان یک فرآیند در نظر بگیرید.
یک رشته (Thread)، بخش کوچکی از یک فرآیند است. رشتهها از حافظه مشترک استفاده میکنند.
- رشتهها سبک هستند.
- ساخت آنها سریع است.
- به شما اجازه میدهند چندین کار را به طور همزمان انجام دهید.
مثال واتساپ: یک فرآیند (واتساپ) چندین رشته را اجرا میکند:
- دریافت پیامها
- ارسال عکسها
- پخش ویدیوها
- نمایش اعلانها
منبع: https://freeacademy.ai/lessons/global-vs-function-vs-block-scope منبع: https://josephcardillo.medium.com/the-difference-between-function-and-block-scope-in-javascript-4296b2322abe