Như chúng ta đã biết, Javascript là một ngôn ngữ chạy đơn luồng được biên dịch. Tức là browser không hiểu Javascript là gì, mà mỗi một browser đều có trình biên dịch được gọi là Javascript Engine.
- Chrome: V8 Engine
- Mozilla Firefox: SpiderMonkey
- Safari: JavascriptCore
Và nhiều trình duyệt khác nữa.
- Javascript hoạt động như thế nào?
Giờ ta có 1 ví dụ như sau, sử dụng Javascript ở browser:

Ở đây ta có thể hiểu rằng:
Trong đoạn mã trên:
- Biến n được khởi tạo và gán giá trị là 5
- Định nghĩa 1 hàm (function) với tên gọi là square, nhận vào một đối số n (parameter) và trả về kết quả là phép tính bình phương của n
- Sau đó ta gọi hàm square và lưu giá trị trả về vào biến square1
- Sau đó ta gọi hàm square và lưu giá trị trả về vào biến square2
- Cuối cùng, gọi function có sẵn là console.log và xuất ra 2 giá trị là kết quả của square1 và square2
Và để có kết quả như vậy, phía sau đó Javascript được xử lý với Engine và cùng nhau đi tìm hiểu xem tại sao lại như vậy nhé.
2. Execution Context là gì?
- Khi JavaScript engine quét một tệp script, nó tạo ra một môi trường gọi là Execution Context (ngữ cảnh thực thi) để xử lý toàn bộ quá trình chuyển đổi và thực thi mã.
- Trong thời gian thực thi ngữ cảnh, trình phân tích cú pháp (parser) sẽ phân tích mã nguồn và cấp phát bộ nhớ cho các biến và hàm.
- Sau đó, mã nguồn được tạo ra và được thực thi. Có hai loại execution context: global (toàn cục) và function (hàm). Global execution context được tạo ra khi một script JavaScript bắt đầu chạy, và nó đại diện cho phạm vi toàn cục trong JavaScript. Function execution context được tạo ra mỗi khi một hàm được gọi, và nó đại diện cho phạm vi cục bộ của hàm đó.
Hay còn gọi cách khác, Execution Context chính là môi trường để thực thi việc chuyển đổi, thông dịch Javascript sang ngôn ngữ máy (Assembly chẳng hạn) để có thể hiểu được và thực hiện những câu lệnh mà chúng ta muốn.
3. Các pha của Javascript Execution Context
Để thực thi Javascript, các Engine ở trình duyệt sử dụng JIT (Just In Time) Complier để thông dịch, và có 2 pha chính:
- Pha khởi tạo: Ở pha này, Javascript Engine tạo ra 1 môi trường Execution Context đầu tiên, khởi tạo các môi trường. Quyết định các biến, hàm và phạm vi trong Execution Context.
- Pha thực thi: Ở pha này, Javascript Engine chạy tất cả dòng code trong Execution Context, và thực thi toàn bộ phần khởi tạo giá trị, hàm, scope, và chạy toàn bộ tất cả các hàm được gọi.
Và tại đây, tất cả về Javascript đều được xử lý bên trong Execution Context. Được chia ra làm 2 phần chính:
- Trong bộ nhớ
- Trong từng dòng code
Và còn nhiều phần về Javascript cơ bản như: Call Stack, Event Loop sẽ tiếp tục ở các phần tiếp theo nhé!