مفهوم Execution Context و Call Stack در جاوا اسکریپت





مفهوم Execution Context و Call Stack در جاوا اسکریپت

Execution Context و Call Stack در جاوا اسکریپت

معرفی

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

مفهوم Execution Context

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

  • Variable Object: شامل متغیرها، پارامترها و مقداردهی‌های آنها می‌باشد.
  • Scope Chain: لیستی از اشیاء Scope ای که Execution Context در آن قرار دارد.
  • This Keyword: ارجاعی به شیء فراخواننده عملکرد است.

مفهوم Call Stack

Call Stack در جاوا اسکریپت یک دسته پشته است که ترتیب فراخوانی عملکردها را نگه می‌دارد. هر زمان که یک عملکرد فراخوانی می‌شود، یک Frame جدید به Call Stack اضافه می‌شود. زمانی که عملکرد به اتمام می‌رسد، Frame مربوط به آن از Call Stack حذف می‌شود.

مثال

برای روشن‌تر شدن مفهوم Execution Context و Call Stack، یک مثال ساده را در نظر بگیرید:


function firstFunction() {
  console.log("Inside first function");
  secondFunction();
}

function secondFunction() {
  console.log("Inside second function");
}

firstFunction();

در این مثال، زمانی که عملکرد firstFunction فراخوانی می‌شود، یک Execution Context برای آن ایجاد می‌شود و به Call Stack اضافه می‌شود. سپس عملکرد secondFunction نیز فراخوانی می‌شود و یک Execution Context جدید برای آن ایجاد می‌شود و به Call Stack اضافه می‌شود. پس از اجرای عملکرد secondFunction، Execution Context مربوط به آن از Call Stack حذف می‌شود و به اجرای عملکرد firstFunction ادامه می‌دهد.