2010-08-09 24 views
6

Tôi muốn tìm hiểu xem trình thông dịch JavaScript (động cơ nếu bạn thích) hoạt động như thế nào. Tôi biết rằng JavaScript không được biên dịch. Tôi đã xem xét đặc tả ECMA, nhưng nó không giải thích cách hoạt động của công cụ thực tế.Trình thông dịch/động cơ JavaScript hoạt động như thế nào?

Lý do chính khiến tôi hỏi đây là vì tôi muốn hiểu tại sao IE7 hoạt động hơi khác với IE8 hoặc Firefox 3.5+.

Tôi nghi ngờ rằng các cuộc gọi chức năng nhất định được xử lý theo thứ tự khác, nhưng tôi muốn biết chắc chắn.

Tôi cũng đã xem một vài video của các cuộc đàm phán của Google về tối ưu hóa JavaScript cùng với JavaScript: Video về phần tốt. Những đề cập nhanh chóng về chủ đề này.

Cảm ơn bạn

+0

Các đặc điểm kỹ thuật ECMA, giống như nhiều thông số kỹ thuật ngôn ngữ lập trình, xác định cú pháp và ngữ nghĩa của ngôn ngữ, chứ không phải thực hiện. Đó là lý do tại sao bạn sẽ không nhìn thấy một "lời giải thích" của công cụ Javascript. –

+0

Nếu bạn chứng minh một ví dụ về những gì bạn thấy tôi có thể giải thích sự khác biệt là gì và tại sao nó thay đổi. – chuckj

Trả lời

1

Nếu bạn có thể đối phó với các ngôn ngữ ở mức độ thấp, nhìn vào nguồn V8 hoặc TraceMonkey và nghiên cứu chúng. Đó là một cách khó khăn để hiểu nội bộ của các công cụ JavaScript, nhưng nó khá thú vị.

4

Tôi có cùng một vấn đề chính xác - Execution Contexts trong thông số ECMA. cung cấp một số ít người biết đến! cái nhìn sâu sắc. Idiosyncrasies mặc dù đang lan tràn trong số ngay cả một phiên bản của nền tảng duy nhất.

Nói chung, các chủ đề về Tự động, Lý thuyết chức năng đệ quy, Lý thuyết ngôn ngữ chính thức và Thiết kế trình biên dịch cung cấp nền tảng vững chắc cho "hiểu" thông dịch viên.

Trong trừu tượng, nếu ngữ nghĩa được xác định rõ ràng, không yêu cầu "định hướng", thì kết quả hàm chính thức sẽ giống hệt nhau bất kể thực hiện. Trong thực tế, có rất nhiều phòng ngoằn ngoèo, như được thấy bởi các tính năng bổ sung như .toSource(), mà một động cơ có thể có và một động cơ khác thì không.

stackoverflow ref: What are Gecko's operational semantics?

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