(JS)JavaScript動作原理
JavaScript
JavaScriptエンジン
JAvascriptエンジンはjavascriptコードを実行するプログラムまたはエンタープライズプログラムとして定義されます.
JAvascriptエンジンは標準的なinterpriterとしても静的コンパイルとしても実現できます
両方式はJITコンパイルを併用しても実現可能である.
JavaScriptエンジンのタイプ
ブラウザごとに異なるエンジンが使用されます.
V 8エンジン動作方式
クロムのV 8エンジンはJITコンパイルに相当します.
1) Call Stack
JAvascriptは単一スレッド言語です.つまり、一度に一つのことしか処理できないということです.
スレッド:オペレーティングシステムで実行されるプログラムをプロセスと呼び、そのプロセスの小さな単位です.Threedは1つのことしか処理できません.スレッドが集まるとプロセスと呼ばれます.
callスタックとは、現在実行されているサブルーチン(関数)に関する情報を含むスタック構造のメモリ領域です.コールスタックは、プロセスが経験しているフェーズを記録します.
(処理中の現在の状況が表示されていると言えば、分かりやすいです.)
const function2 = (x, y) => {
return console.log(x + y);
}
const function1 = (a, b) => {
function2(a, b)
}
function1(1, 2); // 실행
上の関数を呼び出すと、次のようなスタックスタックが表示されます.2) Web API
JavaScriptエンジンが提供するAPIではなく、ブラウザが提供します.
呼び出しスタック内の関数が非同期関数である場合、Web APIはその関数を呼び出します.
DOM
、AJax
、SetTimeOut
などは、Web APIで処理を完了した関数をCallback Queue
に移動する.Callback Queue(Event Queue, Task Queue)
Web APIが送信する非同期処理は一括して行われ,callスタックとは異なる入選特徴を持つ.(コールスタックは後入先出)
集約された非同期関数は、イベントループの監視下に配置されます.
Event Loop
Event Loop
は、1つのタスクのみを実行します.Call Stack
とQueue
を監視しています.監視中に
Call Stack
が空であることが判明した場合、Queue
に積み上げられた非同期関数をCall Stack
に送信することができる.Call Stack
が空の場合、Callback Queu
に蓄積された非同期関数の中で最初に入った関数が送信される.リファレンス映像
Reference
この問題について((JS)JavaScript動作原理), 我々は、より多くの情報をここで見つけました https://velog.io/@yunsungyang-omc/JS-자바스크립트-작동-원리-Event-Loop-Call-Stack-WEb-API-Callback-Queueテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol