Definition
JavaScript engine là một chương trình giúp thực thi các đoạn code JavaScript. Có thể xem JavaScript như JDK của Java hay compiler của C++.
JavaScript ngày xưa sử dụng các trình thông dịch để thông dịch code JavaScript sang mã máy. Nhưng JavaScript ngày nay sử dụng các trình biên dịch Just-in-time Compilation để tối ưu hiệu năng.
Có nhiều JavaScript engine được dùng bởi các trình duyệt khác nhau. Chẳng hạn các trình duyệt nhân Chromium thì sử dụng Google V8, Edge sử dụng Chakra và Firefox sử dụng SpiderMonkey.
Components
JS engine gồm hai phần:
- Call stack: nơi chứa các lời gọi hàm và cũng là nơi thực thi chương trình.
- Memory heap: là một unstructured memory pool lưu tất cả các object mà chương trình cần.

Just-in-time Compilation
Quá trình biên dịch của JS engine diễn ra như sau:
- Parse toàn bộ mã nguồn thành dạng abstract syntax tree (AST).
- Thông dịch toàn bộ AST thành bytecode và thực thi ngay lập tức.
- Trong quá trình thực thi, JS engine sẽ chạy một optimising compiler để tạo ra phiên bản tối ưu hơn của mã nguồn. Phiên bản này sẽ thay thế cho phiên bản đang chạy mà không cần dừng quá trình thực thi.
Minh họa:
