UnderstandJavaScript - The Global Environment and The Global Object

Javascript Engine

- Ở bài trước mình có nói rằng Syntax Parser kiểm tra tính hợp lệ của cú pháp tiếp theo nó chuyển cho Javascript Engine để JSE dịch đoạn code này thành bytecode để máy tính có thể hiểu đc. Nói thêm rằng JSE ở đây mình muốn đề cấp đến V8 (được viết bằng C++) theo mình biết thì sau khi Syntax Parser chuyển chương trình cho JSE (V8) nó sẽ dịch mã JS sang mã máy sau đó mới lấy kết quả để dịch thành bytecode.

Global Environment

=> Bất cứ khi nào mã được chạy trong JavaScript nó sẽ được chạy trong Execution Context (Global)
có nghĩa là một trình bao bọc công cụ JavaScript , chương trình mà do những lập trình viên khác tạo ra để phân tích cú pháp trong code của bạn rồi thực thi , nó bao bọc code được thực thi trong execution context (bối cảnh thực thi).

Khi chúng ta tạo ra một chương trình js , chúng ta sẽ xem xét một bối cảnh thực thi được tạo ra và được chạy , chương trình của bạn chạy thì mặc định Global Execution Context được tạo ra đầu tiên kể cả trong chương trình của bạn không có dòng code nào và JSE tạo ra hai  thứ cho bạn là Global Object và biến "this" trong Global Execution Context  JSE .



=> Mỗi khi bạn chạy code JSE sẽ tự động tạo cho bạn 2 thứ Global Object và This
Để chứng minh điều này mình tạo một file html và link nó đến 1 file js rồi mở trên trình duyệt



Khi bạn tạo ra một biến có phạm vi là Global (toàn cầu - hiểu đơn giản là không nằm trong hàm) nó sẽ được gán như một property của Object Global.

Để chứng minh bạn có thể nhìn kết quả :

Các biến hay hàm được khai global đều nằm trong global object (trong trường hợp Execution Context  này global object = this = window khi bạn mở trình duyệt).



=> Tóm lại khi code của bạn được thực thi , execution context được tạo ra ,nếu chỉ xét trong phạm vi global khi chương trình chạy tạo ra Global Execution Context  bạn có 2 thứ  được JSE tạo ra cho bạn là Global Object , biến "this" và Outer Environment (mình sẽ đề cập đến khái niệm này ở phần sau) như một phần ở Global Execution Context và bạn nhớ rằng trong trường hợp này thì Global Object , biến "this" cùng trỏ đến một thứ là Window (nếu bạn chạy code trên Browser nhé).

Nhận xét

Bài đăng phổ biến