در داخل موتور: چگونه JavaScript واقعاً کار می کند

JavaScript یکی از پرکاربردترین زبانهای برنامه نویسی امروز است. این که آیا شما در حال مرور سایت رسانه های اجتماعی مورد علاقه خود ، خرید آنلاین یا تعامل با یک برنامه وب هستید ، یک فرصت زیاد جاوا اسکریپت در پشت صحنه کار می کند. اما آیا تا به حال فکر کرده اید که واقعاً جاوا اسکریپت اجرا می شود؟ بیایید به دنیای جذاب موتورهای جاوا اسکریپت شیرجه بزنیم و کشف کنیم که چگونه آنها کد شما را زنده می کنند.
این پست وبلاگ کشف خواهد شد:
- موتور جاوا اسکریپت چیست؟
- موتور جاوا اسکریپت چگونه کار می کند؟
- اجزای اصلی موتور JavaScript
- رسیدگی به کارهای ناهمزمان: حلقه رویداد
- قدرت بهینه سازی: گردآوری JIT
بیایید شیرجه بزنیم!
موتور جاوا اسکریپت چیست؟
موتور JavaScript یک برنامه تخصصی است که کد JavaScript را می خواند ، می فهمد و اجرا می کند. آن را به عنوان مترجمی که کدی را که می نویسید می گیرد و آن را به عملی تبدیل می کند که رایانه شما می تواند انجام دهد ، فکر کنید.
موتورهای محبوب JavaScript عبارتند از:
- V8 (مورد استفاده در Google Chrome و Node.js)
- عنکبوت (در موزیلا فایرفاکس استفاده می شود)
- جاوا اسکریپت (مورد استفاده در سافاری)
هر موتور در اجرای خود بی نظیر است ، اما اصول اصلی یکسان است.
موتور جاوا اسکریپت چگونه کار می کند؟
در اینجا یک توضیح گام به گام ساده در مورد نحوه عملکرد یک موتور JavaScript آورده شده است:
1. تجزیه: درک کد
اولین قدم این است که کد جاوا اسکریپت خود را تجزیه کنید. در این مرحله ، موتور کد شما را از متن ساده به چیزی تبدیل می کند که می تواند درک کند: درخت نحوی انتزاعی (AST)بشر
این فرایند را به عنوان شکستن کد خود به قطعات کوچک و منطقی فکر کنید تا آنچه را انجام می دهد ، تجزیه و تحلیل کنید. به عنوان مثال:
console.log("Hello, World!");
موتور این را به عنوان یک تماس عملکردی معرفی می کند (console.log
) با استدلال "Hello, World!"
بشر
2. تدوین: آماده سازی برای اعدام
موتورهای جاوا اسکریپت مدرن از تکنیکی به نام استفاده می کنند تدوین فقط به موقع (JIT)بشر این بدان معنی است که موتور کد JavaScript شما را در کد دستگاه (دستورالعمل رایانه شما می فهمد) درست قبل از اجرای آن کامپایل می کند.
با تهیه کد ، موتور می تواند آن را بسیار سریعتر از تفسیر خط به صورت خط اجرا کند.
3. اجرای: اجرای کد
پس از گردآوری ، موتور کد دستگاه را اجرا می کند. به عنوان مثال ، اگر کد شما می گوید console.log("Hello!")
، عملکرد چاپ “سلام!” به کنسول
اجزای اصلی موتور JavaScript
برای انجام این کارها ، موتور به سه مؤلفه اصلی متکی است:
1. 🗂
این جایی است که داده هایی مانند متغیرها ، اشیاء و توابع ذخیره می شوند. آن را به عنوان یک محوطه ذخیره سازی که در آن موتور همه چیزهایی را که کد شما به آن نیاز دارد پیگیری می کند ، فکر کنید.
2. با پشته تماس بگیرید 🧠
Call Stack آنچه را که موتور در حال حاضر روی آن کار می کند ، پیگیری می کند. هنگامی که یک تابع فراخوانی می شود ، به پشته اضافه می شود. پس از اتمام عملکرد ، از پشته خارج می شود.
3 جمع کننده زباله 🗑
با اجرای برنامه شما ، برخی از داده ها دیگر مورد نیاز نیست. جمع کننده زباله به طور خودکار این داده ها را از حافظه پاک می کند تا کارها کارآمد باشد و از کند شدن کاربرد شما جلوگیری کند.
رسیدگی به کارهای ناهمزمان: حلقه رویداد
جاوا اسکریپت است تک رشته، به این معنی که فقط می تواند یک کار را همزمان انجام دهد. اما چگونه می تواند وظایفی مانند واکشی داده ها از سرور را انجام دهد یا منتظر یک تایمر باشد؟ اینجاست حلقه رویداد وارد می شود
در اینجا نحوه عملکرد آن آورده شده است:
- وظایفی مانند
setTimeout
یا داده های واکشی به یک صف جداگانه (که توسط API های وب مرورگر انجام می شود) ارسال می شوند. - موضوع اصلی (پشته تماس) اجرای کد دیگر را ادامه می دهد.
- پس از آزاد شدن موضوع اصلی ، حلقه رویداد وظایف را از صف می گیرد و آنها را یک به یک اجرا می کند.
به عنوان مثال:
console.log("Start");
setTimeout(() => {
console.log("Hello from the future!");
}, 2000);
console.log("End");
خروجی:
Start
End
Hello from the future!
در اینجا setTimeout
کد را مسدود نمی کند. در عوض ، این وظیفه را برای اجرای بعداً برنامه ریزی می کند و به بقیه کد اجازه می دهد تا ابتدا اجرا شود.
قدرت بهینه سازی: گردآوری JIT
موتورهایی مانند V8 از تکنیک های بهینه سازی پیشرفته برای سریعتر کردن کد شما استفاده می کنند. یکی از ویژگی های مهم این است تدوین فقط به موقع (JIT)بشر در اینجا اتفاق می افتد:
- موتور قسمتهای متداول کد شما را تشخیص می دهد (به نام “کد داغ”)
- این کد را با تهیه آن در کد دستگاه بسیار کارآمد بهینه می کند
- این عملیات مکرر را بسیار سریعتر می کند
پیچیدن همه آن
موتور JavaScript یک فناوری باورنکردنی است که باعث می شود کد شما زنده شود. از تجزیه و تدوین گرفته تا رسیدگی به کارهای ناهمزمان با حلقه رویداد ، به گونه ای طراحی شده است که سریع و کارآمد باشد. درک چگونگی عملکرد نه تنها قدردانی شما از JavaScript بلکه به شما در نوشتن کد بهتر و بهینه تر نیز کمک می کند.
بنابراین دفعه بعد که می نویسید console.log("Hello, World!")
، سفر شگفت انگیز را به یاد داشته باشید که کد شما در داخل موتور می گیرد!