یوسف غیبی
یوسف غیبی
خواندن ۲ دقیقه·۱ ماه پیش

execution context in javascript

به طور خلاصه و مفید محیطی است که کدهای جاوااسکریپت در آن اجرا می‌شوند:
در این پست، به بررسی Execution Context، انواع آن و مراحل تشکیل آن می‌پردازیم تا با نحوه عملکرد پشت صحنه جاوااسکریپت آشنا شوید.

1 - Global Execution Context

به محض شروع اجرای یک اسکریپت جاوااسکریپت، یک GEC ایجاد می‌شود. این محیط شامل موارد زیر است:

  • Global Object (در مرورگر، این شیء window است).
  • this (که در این سطح به Global Object اشاره می‌کند).


2 - Function Execution Context

هر زمان که یک تابع فراخوانی شود، یک Execution Context جدید برای آن تابع ایجاد می‌شود ،که شامل محیطی برای اجرای کدهای داخل تابع است.

3- Eval Execution Context

زمانی که کد با استفاده از تابع eval اجرا شود، یک Execution Context جداگانه ایجاد می‌گردد.


مراحل ایجاد یک Execution Context

به دو فاز اصلی تقسیم می شود: 1- مرحله ایجاد (Creation Phase) 2- مرحله اجرا (Execution Phase)

1- Creation Phase

در این مرحله جاوااسکریپت محیط لازم را برای اجرا کد تنظیم می کند. سه کار اصلی در این مرحله انجام می شود.

الف - ایجاد Activation Object

جاوااسکریپت ابتدا یک شیء به نام Activation Object ایجاد می‌کند که تمامی متغیرها، توابع و پارامترهای ورودی تابع را در آن ذخیره می‌نماید. این شیء در حافظه (شامل Call Stack و Heap و Stack) اختصاص داده می‌شود. با این حال، مقدار متغیرها در این مرحله undefined است.(به خاطر فرایند Hoisting)

ب - ایجاد Scope Chain

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

ج - This binding

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

2- Execution Phase

پس از اتمام موفقیت‌آمیز مرحله ایجاد (Creation Phase)، کد شروع به اجرا می‌کند. در این مرحله، اتفاقات زیر رخ می‌دهد:

الف - مقدار دهی متغییر ها

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

ب - اجرای خط به خط کد ها

در این مرحله، کدها به ترتیب و به صورت خط به خط اجرا می‌شوند. هر دستور به نوبت پردازش شده و عملیات مربوط به آن انجام می‌شود.


execution contextjavascript
برنامه نویس فرانت اند
شاید از این پست‌ها خوشتان بیاید