2012-09-26 33 views

Trả lời

16

Đây là những gì spec nói về lexical environments:

Một môi trường từ vựng là một loại đặc điểm kỹ thuật sử dụng để xác định sự kết hợp của định danh cho các biến cụ thể và chức năng dựa trên cấu trúc làm tổ từ vựng 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.

Dựa trên đó, tôi sẽ nói có, đó là những gì mọi người thường nói về khi họ nói "phạm vi".

Mặc dù nó có lẽ có thể lập luận rằng một "phạm vi" là thực sự được định nghĩa như là một "Declarative Environment Record":

Mỗi bản ghi môi trường tường thuật có liên quan đến phạm vi chương trình ECMAScript chứa khai báo biến và/hoặc chức năng. Một bản ghi môi trường khai báo liên kết bộ các định danh được xác định bởi các khai báo có trong phạm vi của nó.

Nếu bạn nghĩ về "phạm vi" như một thứ chứa các ràng buộc giữa số nhận dạng và giá trị, thì định nghĩa thứ hai có thể phù hợp hơn. Nếu bạn nghĩ về nó như một cái gì đó nhận thức được phạm vi tổ tiên của nó, thì định nghĩa đầu tiên phù hợp hơn.

Chỉnh sửa: và tùy chọn thứ ba là "Execution Context".

+0

Định nghĩa thứ hai đề cập đến "phạm vi", do đó không thể là định nghĩa về "phạm vi". – OrangeDog

+0

Có thể. Câu hỏi đặt ra là phạm vi "lập trình". Định nghĩa thứ hai sử dụng định nghĩa "bình thường" (từ điển nếu bạn muốn) tiếng Anh của phạm vi từ. – zenw0lf

2

Môi trường Lexical là môi trường của hàm được viết. Đó là, thứ tự tĩnh/nơi nó nằm, bất kể nó được gọi từ đâu.

Phạm vi của một biến/chức năng về cơ bản là các vị trí mà từ đó một biến được hiển thị/có thể truy cập.

Ngữ cảnh thực thi là trạng thái của chồng thực thi tại bất kỳ thời điểm nào trong thời gian chạy. Đó là ngữ cảnh thực thi hiện tại.

Các vấn đề liên quan