برنامه نویسی

چگونه جاوا اسکریپت در پشت صحنه کار می کند

موتور JavaScript کد JavaScript را تفسیر می کند و آن را اجرا می کند. موتور JavaScript حاوی یک پشته تماس و یک پشته است. پشته تماس جایی است که کد اجرا می شود ، در حالی که پشته یک فضای حافظه بدون ساختار است که تمام اشیاء را ذخیره می کند.

تدوین به موقع
از آنجا که رایانه ها فقط باینری را درک می کنند ، کد JavaScript باید به باینری ترجمه شود. JavaScript از کامپایل فقط در زمان (JIT) استفاده می کند ، جایی که کد منبع گردآوری شده و بلافاصله اجرا می شود. این رویکرد با ترکیب مزایای تفسیر و تدوین به بهبود عملکرد کمک می کند.

زمینه اعدام
زمینه اعدام حاوی کدی است که در حال حاضر در حال اجرا است و هر آنچه در اجرای آن کمک می کند. دو نوع زمینه اعدام وجود دارد. ما زمینه اجرای جهانی (GEC) و زمینه اجرای عملکرد (FEC) را داریم.
زمینه اجرای جهانی زمینه اجرای پیش فرض است که در آن تمام کد JavaScript که در داخل یک تابع نیست اجرا می شود. برای هر پرونده JavaScript ، فقط یک GEC وجود دارد.
هر زمان که تابعی خوانده شود ، موتور JavaScript نوع متفاوتی از زمینه اجرای – زمینه اجرای عملکرد – را در GEC ایجاد می کند تا کد موجود در آن عملکرد را اجرا کند.
هر زمینه اعدام شامل:
بشر کد فعلی اجرا می شود
بشر منابع متغیر و عملکرد
بشر زنجیره دامنه

پشته تماس
پشته تماس یک ساختار داده است که در کجا در کد ما قرار دارد. این دستور را به ترتیب آخر و اول (LIFO) ثبت می کند ، که در حال حاضر عملکردی اجرا می شود.
هر زمان که یک تابع فراخوانی شود ، به پشته تماس فشار می یابد. هنگامی که عملکرد به پایان می رسد ، از پشته تماس خارج می شود.
این به موتور JavaScript اجازه می دهد تا تماس های عملکردی تو در تو را ردیابی کرده و اجرای آن را در جای مناسب از سر بگیرد.

صف تماس
صف پاسخ به تماس یک ساختار داده FIFO (اول ، اول) است که تمام توابع پاسخ به تماس را ذخیره می کند-مانند مواردی که از کارهای ناهمزمان مانند SettimeOut ، DOM Events یا درخواست های HTTP است. این تماس های برگشتی منتظر هستند تا پشته تماس قبل از اجرای آنها خالی شود.

حلقه رویداد
حلقه رویداد به طور مداوم پشته تماس و صف پاسخ به تماس را بررسی می کند.
اگر پشته تماس خالی باشد (یعنی در حال حاضر هیچ عملکردی در حال اجرا نیست) ، حلقه رویداد قدیمی ترین پاسخ به صف را از صف می گیرد و آن را به سمت پشته تماس می گیرد ، جایی که اجرا می شود.
این مکانیسم JavaScript را که تک رشته ای است ، قادر به انجام رفتارهای ناهمزمان مانند وقایع ، تایمرها و تماس های API بدون مسدود کردن موضوع اصلی می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا