توابع، تردها و نحوه اجرای JavaScript
درک مفاهیم پایه JavaScript به شما کمک میکند تا کد بهتری بنویسید. در اینجا خلاصهای از توابع، فرآیندها (processes)، تردها (threads) و سبکهای اجرا آورده شده است.
۵ نوع تابع در JavaScript
- Named Function: تابعی با یک نام مشخص. این کار به عیبیابی (debugging) و استفاده مجدد کمک میکند.
- Anonymous Function: تابعی بدون نام. شما اغلب از اینها به عنوان callback استفاده میکنید.
- Function Expression: شما یک تابع را به یک متغیر اختصاص میدهید و آن را با استفاده از نام آن متغیر فراخوانی میکنید.
- Arrow Function: یک سینتکس کوتاه که از نماد
=>استفاده میکند. این تابع باthisمتفاوت برخورد میکند. - IIFE: تابعی که بلافاصله پس از تعریف اجرا میشود و یک محدوده (scope) خصوصی ایجاد میکند.
فرآیند (Process) در مقابل ترد (Thread)
یک Process برنامهای است که روی کامپیوتر شما در حال اجراست.
- حافظه مخصوص به خود را دارد.
- دارای یک شناسه منحصربهفرد به نام PID است.
- اگر یک process کرش کند، بقیه همچنان در حال اجرا باقی میمانند.
- مثال: Chrome و Spotify فرآیندهای مجزایی هستند.
یک Thread یک واحد کوچک در داخل یک process است.
- Threadها در یک process، حافظه مشترکی دارند.
- آنها به یک برنامه اجازه میدهند تا چندین کار را به طور همزمان انجام دهد.
- مثال: Chrome از چندین thread برای رندر کردن یک صفحه و همزمان پخش صدا استفاده میکند.
همزمان (Synchronous) در مقابل غیرهمزمان (Asynchronous)
JavaScript تکرشتهای (single-threaded) است. این بدان معناست که در هر لحظه فقط یک کار را مدیریت میکند.
اجرای همزمان (Synchronous Execution):
- وظایف یکی پس از دیگری اجرا میشوند.
- هر خط منتظر میماند تا خط قبلی تمام شود.
- یک کار کند میتواند مانع اجرای بقیه کارها شود.
اجرای غیرهمزمان (Asynchronous Execution):
- وظایف میتوانند اکنون شروع شوند و بعداً تمام شوند.
- این کار باعث مسدود شدن (block) بقیه کد شما نمیشود.
- این فرآیند از طریق Event Loop انجام میشود.
- مرورگر از Web APIs برای مدیریت کارهایی مانند تایمرها یا دریافت دادهها (data fetching) در پسزمینه استفاده میکند.
- به محض اینکه یک کار پسزمینه تمام شد، Event Loop آن را دوباره به stack میفرستد تا اجرا شود.