Tôi đang đọc phần Môi trường thực thi/Môi trường thực tế của ECMA 262 5 specification. Nó nêu rõ những điều sau: (nhấn mạnh thêm)Biểu thức hàm có môi trường phạm vi/từ vựng riêng của mình
Môi trường Lexical là loại đặc điểm được sử dụng để xác định liên kết các định danh cho các biến và chức năng cụ thể dựa trên cấu trúc tổ hợp từ vựng của mã ECMAScript. Một môi trường Lexical bao gồm một bản ghi môi trường và một tham chiếu có thể null đến một môi trường bên ngoài. Thông thường một môi trường Lexical được kết hợp với một số cấu trúc cú pháp cụ thể của mã ECMAScript chẳng hạn như FunctionDeclaration, một mệnh đề WithStatement hoặc Catch của một TryStatement và một Môi trường Lexical mới được tạo ra mỗi khi mã được đánh giá.
Tôi nhận thấy rằng nó không nói gì về việc tạo môi trường từ vựng cho Biểu thức hàm. Là một môi trường từ vựng được tạo ra cho các biểu thức hàm, hay là một tạo ra chỉ cho các khai báo hàm? Tui bỏ lỡ điều gì vậy?
Chỉnh sửa: Tôi nhận thấy rằng mã chức năng sẽ có its own execution context, đó là lý do tại sao tôi cũng nhầm lẫn tại sao biểu thức hàm không được đề cập trong phần môi trường từ vựng.
Vì danh sách các ví dụ bắt đầu bằng "chẳng hạn như", tôi không nghĩ rằng nó có ý định đầy đủ. – Pointy
[Phần 13] (http://www.ecma-international.org/ecma-262/5.1/#sec-13) dường như gợi ý rằng các môi trường từ vựng mới chỉ được tạo ra cho các biểu thức hàm có tên (và không phải cho hàm ẩn danh biểu thức hoặc khai báo hàm). Nhưng tôi phải giải thích nó không chính xác. –